From b9582779cbbd5833fa9afca61fd905a6e0558934 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 14 Nov 2024 14:26:41 +0500 Subject: [PATCH 001/141] add interconnected test cases number 13 and 14 --- .../SOL003/IC_TC_Keywords.robot | 46 +- .../SOL003/VNFLCORetryingFailedTemp.robot | 22 + .../SOL003/VNFLCORollback.robot | 22 + .../SOL003/schemas/VnfLcmOpOccs.schema.json | 1273 +++++++++++++++++ 4 files changed, 1362 insertions(+), 1 deletion(-) create mode 100644 interconnectedTestCases/SOL003/VNFLCORetryingFailedTemp.robot create mode 100644 interconnectedTestCases/SOL003/VNFLCORollback.robot create mode 100644 interconnectedTestCases/SOL003/schemas/VnfLcmOpOccs.schema.json diff --git a/interconnectedTestCases/SOL003/IC_TC_Keywords.robot b/interconnectedTestCases/SOL003/IC_TC_Keywords.robot index d77d6c81..c27c68fd 100644 --- a/interconnectedTestCases/SOL003/IC_TC_Keywords.robot +++ b/interconnectedTestCases/SOL003/IC_TC_Keywords.robot @@ -263,6 +263,34 @@ VNF Instance Scale Out Check Operation Notification For Scale COMPLETED Check Postcondition VNF SCALE_OUT +Post Retry operation task + [Documentation] Test ID: 7.3.1.13.1 + ... Test title: Post Retry operation task + ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state + ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILEDGET status information about multiple VNF LCM Operation OCC_TEMP" state. + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Retry operation + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +Post Rollback operation task + [Documentation] Test ID: 7.3.1.14.1 + ... Test title: Post Rollback operation task + ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation + ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Rollback operation + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + VNF Instance Scale In Send VNF Scale In Request Check HTTP Response Status Code Is 202 @@ -819,4 +847,20 @@ Get Vnf Scale Info [Arguments] ${vnfInstanceId} ${vnfInstance}= Check VNF Instance ${vnfid} ${scaleInfo}= Get Value From Json ${vnfInstance} $..scaleStatus - [Return] ${scaleInfo} \ No newline at end of file + [Return] ${scaleInfo} + +Post Retry operation + Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${globalVnfLcmOpOccId}/retry + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Rollback operation + Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${globalVnfLcmOpOccId}/rollback + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/interconnectedTestCases/SOL003/VNFLCORetryingFailedTemp.robot b/interconnectedTestCases/SOL003/VNFLCORetryingFailedTemp.robot new file mode 100644 index 00000000..4b5eeb6d --- /dev/null +++ b/interconnectedTestCases/SOL003/VNFLCORetryingFailedTemp.robot @@ -0,0 +1,22 @@ +*** Settings *** +Suite Setup Initialize System +Suite Teardown Terminate All Processes kill=true +Resource environment/variables.txt # Generic Parameters +Resource IC_TC_Keywords.robot +Library JSONLibrary + +*** Test Cases *** +Test that POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state + [Documentation] Test ID: 11.3.1.13.1 + ... Test title: Test that POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state + ... Test objective: The objective is to test the interconnected case of VNF is to retry a VNF lifecycle operation if the operation is in FAILED_TEMP state. + ... Pre-conditions: none + ... Reference: ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_NFVO, Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET Individual VNF Package + POST Create a new vnfInstance + VNF Instantiation + GET status information about multiple VNF LCM Operation OCC + Post Retry operation task \ No newline at end of file diff --git a/interconnectedTestCases/SOL003/VNFLCORollback.robot b/interconnectedTestCases/SOL003/VNFLCORollback.robot new file mode 100644 index 00000000..aadedc87 --- /dev/null +++ b/interconnectedTestCases/SOL003/VNFLCORollback.robot @@ -0,0 +1,22 @@ +*** Settings *** +Suite Setup Initialize System +Suite Teardown Terminate All Processes kill=true +Resource environment/variables.txt # Generic Parameters +Resource IC_TC_Keywords.robot +Library JSONLibrary + +*** Test Cases *** +Test that POST method initiates rollback on a VNF lifecycle operation + [Documentation] Test ID: 11.3.1.14.1 + ... Test title: Test that POST method initiates rollback on a VNF lifecycle operation + ... Test objective: The objective is to test the interconnected case of VNF is to rollback a VNF lifecycle operation. + ... Pre-conditions: none + ... Reference: ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_NFVO, Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET Individual VNF Package + POST Create a new vnfInstance + VNF Instantiation + GET status information about multiple VNF LCM Operation OCC + Post Rollback operation task \ No newline at end of file diff --git a/interconnectedTestCases/SOL003/schemas/VnfLcmOpOccs.schema.json b/interconnectedTestCases/SOL003/schemas/VnfLcmOpOccs.schema.json new file mode 100644 index 00000000..29ccb930 --- /dev/null +++ b/interconnectedTestCases/SOL003/schemas/VnfLcmOpOccs.schema.json @@ -0,0 +1,1273 @@ +{ + "type": "array", + "items": { + "description": "This type represents a VNF lifecycle management operation occurrence.\nNOTE 1:\tThis allows the NFVO to obtain the information contained in the latest \n \"result\" notification if it has not received it due to an error or a \n wrongly configured subscription filter.\nNOTE 2:\tNot more than one of changedInfo and modificationsTriggeredByVnfPkgChange \n shall be present.\nNOTE 3:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" \n entries as needed for signalling the different types of changes, i.e. one \n per virtual link and change type. For instance, in the case of signaling \n affected VL instances involving the addition of a particular VL instance \n with links ports, one \"AffectedVirtualLink\" entry signals the addition of \n the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure \n equal to \"ADDED\", and another \"AffectedVirtualLink\" entry signals the addition \n of externally visible VNF link ports of the VL by using the \"changeType\" equal \n to \"LINK_PORT_ADDED\".\nNOTE 4:\tA coordination action has timed out if the VNFM has not been able to read the \n \"Individual coordination action\" resource within a timeout interval after requesting \n the coordination to be started or to be cancelled. The length of the timeout interval \n is defined by means outside the scope of the present document.\nNOTE 5: The list of rejected coordinations may be garbage collected if the LCM operation\n occurrence has reached a terminal state, i.e. one of \"COMPLETED\", \"FAILED\" and \"ROLLED_BACK\".\n", + "type": "object", + "oneOf": [ + { + "required": ["changedInfo"] + }, + { + "required": ["modificationsTriggeredByVnfPkgChange"] + } + ], + "required": [ + "id", + "operationState", + "stateEnteredTime", + "startTime", + "vnfInstanceId", + "operation", + "isAutomaticInvocation", + "isCancelPending", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operationState": { + "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The LCM operation has been completed successfully. FAILED_TEMP: The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED: The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK: The LCM operation is currently being rolled back. ROLLED_BACK: The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n", + "type": "string", + "enum": [ + "STARTING", + "PROCESSING", + "COMPLETED", + "FAILED_TEMP", + "FAILED", + "ROLLING_BACK", + "ROLLED_BACK" + ] + }, + "stateEnteredTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "startTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "grantId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operation": { + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "SCALE_TO_LEVEL", + "CHANGE_FLAVOUR", + "TERMINATE", + "HEAL", + "OPERATE", + "CHANGE_EXT_CONN", + "MODIFY_INFO", + "CREATE_SNAPSHOT", + "REVERT_TO_SNAPSHOT", + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" + ] + }, + "isAutomaticInvocation": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "operationParams": { + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. \nThe following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n", + "type": "object" + }, + "isCancelPending": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "cancelMode": { + "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n", + "type": "string", + "enum": ["GRACEFUL", "FORCEFUL"] + }, + "error": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807, the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807.\n", + "type": "object", + "required": ["status", "detail"], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + }, + "resourceChanges": { + "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n", + "type": "object", + "properties": { + "affectedVnfcs": { + "description": "Information about VNFC instances that were affected during the lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VNFCs.\nNOTE:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer \n (i.e. the NFVO) to assist in correlating the resource changes performed during \n the LCM operation with the granted resources in a specific Grant exchange, which \n is identified by the \"grantId\" available in the \"Individual VNF lifecycle management \n operation occurrence\" and the \"id\" in the \"Individual Grant\".\n", + "type": "object", + "required": ["id", "vduId", "changeType", "computeResource"], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"] + }, + "computeResource": { + "required": ["resourceId"], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "affectedVnfcCpIds": { + "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "addedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "removedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + }, + "affectedVirtualLinks": { + "description": "Information about VL instances that were affected during the lifecycle operation. See notes 1 and 3.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\nNOTE 1:\tWhen signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, \n the \"networkResource\" and \"resourceDefinitionId\" attributes refer to the affected virtual link \n instance, not the link port instance. The resource handles of the affected VNF link ports can be \n found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\nNOTE 2:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer (i.e. the NFVO) to \n assist in correlating the resource changes performed during the LCM operation with the granted \n resources in a specific Grant exchange, which is identified by the \"grantId\" available in the \n \"Individual VNF lifecycle management operation occurrence\" and the \"id\" in the \"Individual Grant\".\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "changeType", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change.\nPermitted values: -\tADDED -\tREMOVED -\tMODIFIED -\tTEMPORARY -\tLINK_PORT_ADDED -\tLINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. See note 1.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY", + "LINK_PORT_ADDED", + "LINK_PORT_REMOVED" + ] + }, + "networkResource": { + "required": ["resourceId"], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "vnfLinkPortIds": { + "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references a \"VnfLinkPortInfo\" structure.\nShall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related \"VnfLinkPortInfo\" structures are present (case \"added\") or have been present (case \"removed\") in the \"VnfVirtualLinkResourceInfo\" or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResource¬Info\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. See note 1.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "affectedExtLinkPorts": { + "description": "Information about external VNF link ports that were affected during the lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\nNOTE:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer (i.e. the NFVO) to assist in correlating \n the resource changes performed during the LCM operation with the granted resources in a specific Grant exchange, which \n is identified by the \"grantId\" available in the \"Individual VNF lifecycle management operation occurrence\" and the \"id\" \n in the \"Individual Grant\".\n", + "type": "object", + "required": [ + "id", + "changeType", + "extCpInstanceId", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: -\tADDED - MODIFIED -\tREMOVED\n", + "type": "string", + "enum": ["ADDED", "MODIFIED", "REMOVED"] + }, + "extCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": ["resourceId"], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + } + } + } + }, + "affectedVirtualStorages": { + "description": "Information about virtualised storage instances that were affected during the lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\nNOTE:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer (i.e. the NFVO) to \n assist in correlating the resource changes performed during the LCM operation with the granted \n resources in a specific Grant exchange, which is identified by the \"grantId\" available in the \n \"Individual VNF lifecycle management operation occurrence\" and the \"id\" in the \"Individual Grant\".\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "changeType", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"] + }, + "storageResource": { + "required": ["resourceId"], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "changedInfo": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\nNOTE:\tIf present, this attribute (which depends on the value of the \"vnfdId\" attribute) \n was modified implicitly following a request to modify the \"vnfdId\" attribute, by \n copying the value of this attribute from the VNFD in the VNF Package identified by \n the \"vnfdId\" attribute.\n", + "type": "object", + "properties": { + "vnfInstanceName": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vimConnectionInfo": { + "description": "If present, this attribute signals modifications the \"vimConnectionInfo\" attribute array in \"VnfInstance\".\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "type": "object", + "required": ["vimType"], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "vnfProductName": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + } + } + }, + "affectedVipCps": { + "description": "Information about virtual IP CP instances that were affected during the execution of the lifecycle management operation.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified virtual IP CP instances.\n", + "type": "object", + "required": ["cpInstanceId", "cpdId", "changeType"], + "properties": { + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED -\tMODIFIED\n", + "type": "string", + "enum": ["ADDED", "REMOVED", "MODIFIED"] + } + } + } + }, + "changedExtConnectivity": { + "description": "Information about changed external connectivity, if applicable. See note 1.\n", + "type": "array", + "items": { + "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", + "type": "object", + "required": ["id", "resourceHandle", "currentVnfExtCpData"], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": ["resourceId"], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", + "type": "object", + "required": ["id", "resourceHandle"], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": ["resourceId"], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "secondaryCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "type": "object", + "required": ["cpdId"], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "anyOf": [ + { + "required": ["linkPortId"] + }, + { + "required": ["cpProtocolData"] + }, + { + "required": ["netAttDefResourceId"] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "createExtLinkPort": { + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "type": "boolean" + }, + "netAttDefResourceId": { + "description": "Identifier of the “NetAttDefResourceData” structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", + "type": "array", + "items": { + "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", + "type": "object", + "required": ["layerProtocol"], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI’s transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": ["macAddress"] + }, + { + "required": ["ipAddresses"] + } + ], + "oneOf": [ + { + "required": ["fixedAddresses"] + }, + { + "required": ["numDynamicAddresses"] + }, + { + "required": ["ipAddressRange"] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationType": { + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "type": "string", + "enum": ["VLAN", "INHERIT"] + }, + "segmentationId": { + "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": ["type"], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": ["IPV4", "IPV6"] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", + "type": "object", + "required": ["type"], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": ["IPV4", "IPV6"] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + }, + "extNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", + "type": "object", + "required": ["netAttDefResourceInfoId", "netAttDefResource"], + "properties": { + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "netAttDefResource": { + "required": ["resourceId"], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "associatedExtCpId": { + "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + } + } + } + }, + "modificationsTriggeredByVnfPkgChange": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\nNOTE 1:\tThis attribute represents the delta (semantics as per IETF RFC 7396, JSON Merge Patch) between the value \n of the attribute at the start of the \"Change current VNF package\" operation and the value of the attribute \n at its completion.\nNOTE 2:\tIf present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly \n during the related operation and contains a copy of the value of the related attribute from the VNFD in the \n VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "object", + "properties": { + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". See note 2.\n", + "type": "string" + }, + "vnfProductName": { + "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". See note 2.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vimConnectionInfo": { + "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "type": "object", + "required": ["vimType"], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "vnfSnapshotInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "lcmCoordinations": { + "description": "Information about LCM coordination actions (see clause 10 in ETSI GS NFV-SOL002) related to this LCM operation occurrence.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "coordinationActionName", + "startTime", + "endpointType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "coordinationActionName": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "coordinationResult": { + "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\".\n", + "type": "string", + "enum": ["CONTINUE", "ABORT", "CANCELLED"] + }, + "startTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "delay": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endpointType": { + "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", + "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.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "coordinationActionName", + "rejectionTime", + "endpointType", + "delay" + ], + "properties": { + "coordinationActionName": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "rejectionTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "delay": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endpointType": { + "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", + "type": "string", + "enum": ["MGMT", "VNF"] + } + } + } + }, + "warnings": { + "description": "Warning messages that were generated while the operation was executing.\nIf the operation has included LCM coordination actions and these have resulted in warnings, such warnings should be added to this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": ["self", "vnfInstance"], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": ["href"], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": ["href"], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "grant": { + "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" + } + } + }, + "cancel": { + "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" + } + } + }, + "retry": { + "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" + } + } + }, + "rollback": { + "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" + } + } + }, + "fail": { + "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" + } + } + }, + "vnfSnapshot": { + "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" + } + } + } + } + } + } + } +} -- GitLab From 44c87423c0dc1bfbf8bf49c0eb1c54650453101a Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 14 Nov 2024 14:31:50 +0500 Subject: [PATCH 002/141] update version number in the test cases description --- .../SOL003/IC_TC_Keywords.robot | 36 +++++++++---------- .../SOL003/SubscriptionCreationAndQuery.robot | 2 +- .../SOL003/SubscriptionDeletion.robot | 2 +- .../SOL003/VNFInstanceCreationAndQuery.robot | 2 +- .../SOL003/VNFInstanceDeletion.robot | 2 +- .../SOL003/VNFInstanceInstantiation.robot | 2 +- .../SOL003/VNFInstanceModification.robot | 2 +- .../VNFInstanceOperationOccurrences.robot | 2 +- .../SOL003/VNFInstanceScaleIn.robot | 2 +- .../SOL003/VNFInstanceScaleOut.robot | 2 +- .../SOL003/VNFInstanceTermination.robot | 2 +- 11 files changed, 28 insertions(+), 28 deletions(-) diff --git a/interconnectedTestCases/SOL003/IC_TC_Keywords.robot b/interconnectedTestCases/SOL003/IC_TC_Keywords.robot index c27c68fd..2e66df40 100644 --- a/interconnectedTestCases/SOL003/IC_TC_Keywords.robot +++ b/interconnectedTestCases/SOL003/IC_TC_Keywords.robot @@ -26,7 +26,7 @@ GET Individual VNF Package ... Test title: GET Individual VNF Package ... Test objective: The objective is to test the retrieval of an individual VNF package information perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ POST Create a new vnfInstance ... Test title: POST Create a new vnfInstance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance created @@ -54,7 +54,7 @@ GET information about multiple VNF instances ... Test title: GET information about multiple VNF instances ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ Get Information about an individual VNF Instance ... Test title: Get Information about an individual VNF Instance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ DELETE Individual VNFInstance ... Test title: DELETE Individual VNFInstance ... Test objective: The objective is to delete a VNF instance ... Pre-conditions: the VNF instance resource is existing - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance deleted @@ -94,7 +94,7 @@ PATCH Individual VNFInstance ... Test title: PATCH Individual VNFInstance ... Test objective: This method modifies an individual VNF instance resource ... Pre-conditions: an existing VNF instance resource - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance modified @@ -107,7 +107,7 @@ Instantiate a vnfInstance ... Test title: Post Instantiate Individual VNFInstance ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state - ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -121,7 +121,7 @@ VNF Instantiation ... Test title: VNF Instantiation workflow ... Test objective: The objective is to test the workflow for the instantiation of a VNF instance ... Pre-conditions: VNF instance resources is already created. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance in INSTANTIATED state @@ -139,7 +139,7 @@ POST Terminate a vnfInstance ... Test title: POST Terminate a vnfInstance ... Test objective: The objective is to test that POST method terminate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ Terminate a VNF Instance ... Test title: Terminate a VNF Instance ... Test objective: The objective is to terminate a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. ... Post-Conditions: VNF instance in NOT_INSTANTIATED state @@ -171,7 +171,7 @@ GET status information about multiple VNF LCM Operation OCC ... Test title: GET status information about multiple VNF LCM Operation OCC ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -184,7 +184,7 @@ Get Individual VNF LCM Operation occurrence ... Test title: Get Individual VNF LCM Operation occurrences ... Test objective: The objective is to test that this method retrieve information about a VNF lifecycle management operation occurrence ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -198,7 +198,7 @@ POST Create a new subscription ... Test title: POST Create a new subscription ... Test objective: The POST method creates a new subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -211,7 +211,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -224,7 +224,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the Get individual subscription ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -237,7 +237,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that the individual subscription is succesfully deleted ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Subscription deleted from VNFM @@ -268,7 +268,7 @@ Post Retry operation task ... Test title: Post Retry operation task ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILEDGET status information about multiple VNF LCM Operation OCC_TEMP" state. - ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -282,7 +282,7 @@ Post Rollback operation task ... Test title: Post Rollback operation task ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/interconnectedTestCases/SOL003/SubscriptionCreationAndQuery.robot b/interconnectedTestCases/SOL003/SubscriptionCreationAndQuery.robot index 1a9bc2c9..171cfcd9 100644 --- a/interconnectedTestCases/SOL003/SubscriptionCreationAndQuery.robot +++ b/interconnectedTestCases/SOL003/SubscriptionCreationAndQuery.robot @@ -10,7 +10,7 @@ Create a new subscription and query information about multiple and individual su ... Test title: Create a new subscription and query information about multiple and individual subscription resources ... Test objective: The objective is to test the interconnected case of subscription resource creation and query multiple and individual resources ... Pre-conditions: None - ... Reference: ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO, Config_prod_VNFM ... Applicability: None ... Post-conditions: None diff --git a/interconnectedTestCases/SOL003/SubscriptionDeletion.robot b/interconnectedTestCases/SOL003/SubscriptionDeletion.robot index 68ab3e21..0e08107b 100644 --- a/interconnectedTestCases/SOL003/SubscriptionDeletion.robot +++ b/interconnectedTestCases/SOL003/SubscriptionDeletion.robot @@ -10,7 +10,7 @@ Delete individual subscription ... Test title: Delete individual subscription ... Test objective: The objective is to test the interconnected case of subscription resource creation and deletion ... Pre-conditions: none - ... Reference: ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO, Config_prod_VNFM ... Applicability: none ... Post-Conditions: Subscription deleted from VNFM diff --git a/interconnectedTestCases/SOL003/VNFInstanceCreationAndQuery.robot b/interconnectedTestCases/SOL003/VNFInstanceCreationAndQuery.robot index 933f3868..07924995 100644 --- a/interconnectedTestCases/SOL003/VNFInstanceCreationAndQuery.robot +++ b/interconnectedTestCases/SOL003/VNFInstanceCreationAndQuery.robot @@ -10,7 +10,7 @@ Create a new VNF instance resource and query information about multiple and indi ... Test title: Create a new VNF instance resource and query information about multiple and individual VNF instance ... Test objective: The objective is to test the interconnected case of VNF instance resource creation and query multiple and individual resources ... Pre-conditions: None - ... Reference: ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO, Config_prod_VNFM ... Applicability: None ... Post-conditions: None diff --git a/interconnectedTestCases/SOL003/VNFInstanceDeletion.robot b/interconnectedTestCases/SOL003/VNFInstanceDeletion.robot index 365d58b2..498f33f5 100644 --- a/interconnectedTestCases/SOL003/VNFInstanceDeletion.robot +++ b/interconnectedTestCases/SOL003/VNFInstanceDeletion.robot @@ -11,7 +11,7 @@ Delete an individual VNF instance ... Test title: Delete an individual VNF instance ... Test objective: The objective is to test the interconnected case of VNF instance resource creation and deletion ... Pre-conditions: none - ... Reference: ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO, Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/interconnectedTestCases/SOL003/VNFInstanceInstantiation.robot b/interconnectedTestCases/SOL003/VNFInstanceInstantiation.robot index e2a1d2ea..923a642d 100644 --- a/interconnectedTestCases/SOL003/VNFInstanceInstantiation.robot +++ b/interconnectedTestCases/SOL003/VNFInstanceInstantiation.robot @@ -11,7 +11,7 @@ Instantiate a VNF instance ... Test title: Instantiate a VNF instance ... Test objective: The objective is to test the interconnected case of VNF instance resource creation and instantiation ... Pre-conditions: none - ... Reference: ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO, Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/interconnectedTestCases/SOL003/VNFInstanceModification.robot b/interconnectedTestCases/SOL003/VNFInstanceModification.robot index 40cc49cf..d722c03f 100644 --- a/interconnectedTestCases/SOL003/VNFInstanceModification.robot +++ b/interconnectedTestCases/SOL003/VNFInstanceModification.robot @@ -9,7 +9,7 @@ Modify an individual VNF instance resource ... Test title: Modify an individual VNF instance resource ... Test objective: The objective is to test the interconnected case of VNF instance resource creation and modification ... Pre-conditions: none - ... Reference: ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO, Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/interconnectedTestCases/SOL003/VNFInstanceOperationOccurrences.robot b/interconnectedTestCases/SOL003/VNFInstanceOperationOccurrences.robot index dd1ceb86..565eafa4 100644 --- a/interconnectedTestCases/SOL003/VNFInstanceOperationOccurrences.robot +++ b/interconnectedTestCases/SOL003/VNFInstanceOperationOccurrences.robot @@ -11,7 +11,7 @@ Retrieve VNF instance Operation Occurrences ... Test title: Retrieve VNF instance Operation Occurrences ... Test objective: The objective is to test the interconnected case of VNF instance resource creation, instantiation and retrieval of information about VNF lifecycle management operation occurrences ... Pre-conditions: none - ... Reference: ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO, Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/interconnectedTestCases/SOL003/VNFInstanceScaleIn.robot b/interconnectedTestCases/SOL003/VNFInstanceScaleIn.robot index 1d155b28..b6996974 100644 --- a/interconnectedTestCases/SOL003/VNFInstanceScaleIn.robot +++ b/interconnectedTestCases/SOL003/VNFInstanceScaleIn.robot @@ -11,7 +11,7 @@ Scale In a VNF instance ... Test title: Scale In a VNF instance ... Test objective: The objective is to test the interconnected case of VNF instance resource creation, instantiation and scale in ... Pre-conditions: none - ... Reference: ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO, Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/interconnectedTestCases/SOL003/VNFInstanceScaleOut.robot b/interconnectedTestCases/SOL003/VNFInstanceScaleOut.robot index 5648508a..c330565f 100644 --- a/interconnectedTestCases/SOL003/VNFInstanceScaleOut.robot +++ b/interconnectedTestCases/SOL003/VNFInstanceScaleOut.robot @@ -11,7 +11,7 @@ Scale Out a VNF instance ... Test title: Scale Out a VNF instance ... Test objective: The objective is to test the interconnected case of VNF instance resource creation, instantiation and scale out ... Pre-conditions: none - ... Reference: ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO, Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/interconnectedTestCases/SOL003/VNFInstanceTermination.robot b/interconnectedTestCases/SOL003/VNFInstanceTermination.robot index 1a734ca1..a0013a94 100644 --- a/interconnectedTestCases/SOL003/VNFInstanceTermination.robot +++ b/interconnectedTestCases/SOL003/VNFInstanceTermination.robot @@ -11,7 +11,7 @@ Terminate a VNF instance ... Test title: Terminate a VNF instance ... Test objective: The objective is to test the interconnected case of VNF instance resource creation, instantiation and termination ... Pre-conditions: none - ... Reference: ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO, Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From a44031904ecbead78a4e7e25b21191405d59edf4 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 14 Nov 2024 15:49:54 +0500 Subject: [PATCH 003/141] add missing json schemas and request bodies --- .../SOL003/jsons/scaleVnfRequest.json | 4 + .../SOL003/schemas/Subscription.schema.json | 196 ++++++++++++++++++ 2 files changed, 200 insertions(+) create mode 100644 interconnectedTestCases/SOL003/jsons/scaleVnfRequest.json create mode 100644 interconnectedTestCases/SOL003/schemas/Subscription.schema.json diff --git a/interconnectedTestCases/SOL003/jsons/scaleVnfRequest.json b/interconnectedTestCases/SOL003/jsons/scaleVnfRequest.json new file mode 100644 index 00000000..142fad5a --- /dev/null +++ b/interconnectedTestCases/SOL003/jsons/scaleVnfRequest.json @@ -0,0 +1,4 @@ +{{ + "type": "{scaletype}", + "aspectId": "{scaleAspectId}" +}} \ No newline at end of file diff --git a/interconnectedTestCases/SOL003/schemas/Subscription.schema.json b/interconnectedTestCases/SOL003/schemas/Subscription.schema.json new file mode 100644 index 00000000..8f2bb990 --- /dev/null +++ b/interconnectedTestCases/SOL003/schemas/Subscription.schema.json @@ -0,0 +1,196 @@ +{ + "description": "This type represents a subscription related to notifications about VNF lifecycle changes.\n", + "type": "object", + "required": ["id", "callbackUri", "verbosity", "_links"], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "filter": { + "description": "This type represents a subscription filter related to notifications about VNF lifecycle changes.\nAt a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\nNOTE:\tThe permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of \n the notification types to facilitate automated code generation systems.\n", + "type": "object", + "properties": { + "vnfInstanceSubscriptionFilter": { + "description": "This type represents subscription filter criteria to match VNF instances. * NOTE 1:\tThe attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances\n that are based on certain VNFDs in a filter. They should not be used both in the same filter instance,\n but one alternative should be chosen.\n NOTE 2:\tThe attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF\n instances in a filter. They should not be used both in the same filter instance, but one alternative\n should be chosen.\n", + "type": "object", + "anyOf": [ + { + "oneOf": [ + { + "required": ["vnfdId"] + }, + { + "required": ["vnfProductsFromProviders"] + } + ] + }, + { + "oneOf": [ + { + "required": ["vnfInstanceIds"] + }, + { + "required": ["vnfInstanceNames"] + } + ] + } + ], + "properties": { + "vnfdIds": { + "description": "If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. See note 1.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "vnfProductsFromProviders": { + "description": "If present, match VNF instances that belong to VNF products from certain providers. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": ["vnfProvider"], + "properties": { + "vnfProvider": { + "description": "Name of the VNF provider to match.\n", + "type": "string" + }, + "vnfProducts": { + "description": "If present, match VNF instances that belong to VNF products with certain product names, from one particular provider.\n", + "type": "array", + "items": { + "type": "object", + "required": ["vnfProductName"], + "properties": { + "vnfProductName": { + "description": "Name of the VNF product to match.\n", + "type": "string" + }, + "versions": { + "description": "If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider.\n", + "type": "array", + "items": { + "type": "object", + "required": ["vnfSoftwareVersion"], + "properties": { + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersions": { + "description": "If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n", + "type": "array", + "items": { + "description": "A version.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "vnfInstanceIds": { + "description": "If present, match VNF instances with an instance identifier listed in this attribute. See note 2.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "vnfInstanceNames": { + "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. See note 2.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "notificationTypes": { + "description": "Match particular notification types. \nPermitted values: -\tVnfLcmOperationOccurrenceNotification -\tVnfIdentifierCreationNotification -\tVnfIdentifierDeletionNotification See note.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "VnfLcmOperationOccurrenceNotification", + "VnfIdentifierCreationNotification", + "VnfIdentifierDeletionNotification" + ] + } + }, + "operationTypes": { + "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", + "type": "array", + "items": { + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "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" + ] + } + }, + "operationStates": { + "description": "Match particular LCM operation state values as reported in notifications of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", + "type": "array", + "items": { + "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The LCM operation has been completed successfully. FAILED_TEMP: The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED: The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK: The LCM operation is currently being rolled back. ROLLED_BACK: The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n", + "type": "string", + "enum": [ + "STARTING", + "PROCESSING", + "COMPLETED", + "FAILED_TEMP", + "FAILED", + "ROLLING_BACK", + "ROLLED_BACK" + ] + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "verbosity": { + "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", + "type": "string", + "enum": ["FULL", "SHORT"] + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": ["self"], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": ["href"], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } +} -- GitLab From 1c95f65a9d26abe605881e4e5c932a6a048dbe24 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Mon, 18 Nov 2024 15:40:23 +0500 Subject: [PATCH 004/141] update root url for interconnected test cases --- interconnectedTestCases/SOL003/IC_TC_Keywords.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interconnectedTestCases/SOL003/IC_TC_Keywords.robot b/interconnectedTestCases/SOL003/IC_TC_Keywords.robot index 2e66df40..e12a4027 100644 --- a/interconnectedTestCases/SOL003/IC_TC_Keywords.robot +++ b/interconnectedTestCases/SOL003/IC_TC_Keywords.robot @@ -853,7 +853,7 @@ Post Retry operation Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${globalVnfLcmOpOccId}/retry + Post ${VNFM_API_ROOT}/${VNFM_API_NAME}/${VNFM_API_MAJOR_VERSION}/vnf_lcm_op_occs/${globalVnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -861,6 +861,6 @@ Post Rollback operation Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response - Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${globalVnfLcmOpOccId}/rollback + Post ${VNFM_API_ROOT}/${VNFM_API_NAME}/${VNFM_API_MAJOR_VERSION}/vnf_lcm_op_occs/${globalVnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} \ No newline at end of file -- GitLab From ccc90e54bf3e4067c1c0c0282b92ec4dfbb89757 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 19 Nov 2024 11:40:03 +0500 Subject: [PATCH 005/141] update schemas as per v5.1.1 --- .../SOL003/schemas/Subscription.schema.json | 7 +- .../SOL003/schemas/VnfLcmOpOccs.schema.json | 2431 +++++------ .../SOL003/schemas/vnfInstance.schema.json | 3659 +++++++++++++---- .../SOL003/schemas/vnfInstances.schema.json | 2356 ++++++++++- .../SOL003/schemas/vnfPkgInfo.schema.json | 26 +- 5 files changed, 6349 insertions(+), 2130 deletions(-) diff --git a/interconnectedTestCases/SOL003/schemas/Subscription.schema.json b/interconnectedTestCases/SOL003/schemas/Subscription.schema.json index 8f2bb990..4dfbe696 100644 --- a/interconnectedTestCases/SOL003/schemas/Subscription.schema.json +++ b/interconnectedTestCases/SOL003/schemas/Subscription.schema.json @@ -128,7 +128,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -142,7 +142,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] } }, @@ -193,4 +194,4 @@ } } } -} +} \ No newline at end of file diff --git a/interconnectedTestCases/SOL003/schemas/VnfLcmOpOccs.schema.json b/interconnectedTestCases/SOL003/schemas/VnfLcmOpOccs.schema.json index 29ccb930..a56c2339 100644 --- a/interconnectedTestCases/SOL003/schemas/VnfLcmOpOccs.schema.json +++ b/interconnectedTestCases/SOL003/schemas/VnfLcmOpOccs.schema.json @@ -4,1270 +4,1363 @@ "description": "This type represents a VNF lifecycle management operation occurrence.\nNOTE 1:\tThis allows the NFVO to obtain the information contained in the latest \n \"result\" notification if it has not received it due to an error or a \n wrongly configured subscription filter.\nNOTE 2:\tNot more than one of changedInfo and modificationsTriggeredByVnfPkgChange \n shall be present.\nNOTE 3:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" \n entries as needed for signalling the different types of changes, i.e. one \n per virtual link and change type. For instance, in the case of signaling \n affected VL instances involving the addition of a particular VL instance \n with links ports, one \"AffectedVirtualLink\" entry signals the addition of \n the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure \n equal to \"ADDED\", and another \"AffectedVirtualLink\" entry signals the addition \n of externally visible VNF link ports of the VL by using the \"changeType\" equal \n to \"LINK_PORT_ADDED\".\nNOTE 4:\tA coordination action has timed out if the VNFM has not been able to read the \n \"Individual coordination action\" resource within a timeout interval after requesting \n the coordination to be started or to be cancelled. The length of the timeout interval \n is defined by means outside the scope of the present document.\nNOTE 5: The list of rejected coordinations may be garbage collected if the LCM operation\n occurrence has reached a terminal state, i.e. one of \"COMPLETED\", \"FAILED\" and \"ROLLED_BACK\".\n", "type": "object", "oneOf": [ - { + { "required": ["changedInfo"] - }, - { + }, + { "required": ["modificationsTriggeredByVnfPkgChange"] - } + } ], "required": [ - "id", - "operationState", - "stateEnteredTime", - "startTime", - "vnfInstanceId", - "operation", - "isAutomaticInvocation", - "isCancelPending", - "_links" + "id", + "operationState", + "stateEnteredTime", + "startTime", + "vnfInstanceId", + "operation", + "isAutomaticInvocation", + "isCancelPending" ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "operationState": { - "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The LCM operation has been completed successfully. FAILED_TEMP: The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED: The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK: The LCM operation is currently being rolled back. ROLLED_BACK: The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n", - "type": "string", - "enum": [ - "STARTING", - "PROCESSING", - "COMPLETED", - "FAILED_TEMP", - "FAILED", - "ROLLING_BACK", - "ROLLED_BACK" - ] - }, - "stateEnteredTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "startTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "grantId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", - "type": "string", - "enum": [ - "INSTANTIATE", - "SCALE", - "SCALE_TO_LEVEL", - "CHANGE_FLAVOUR", - "TERMINATE", - "HEAL", - "OPERATE", - "CHANGE_EXT_CONN", - "MODIFY_INFO", - "CREATE_SNAPSHOT", - "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG", - "SELECT_DEPL_MODS" - ] - }, - "isAutomaticInvocation": { - "description": "The Boolean is a data type having two values (true and false).\n", - "type": "boolean" - }, - "operationParams": { - "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. \nThe following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n", - "type": "object" - }, - "isCancelPending": { - "description": "The Boolean is a data type having two values (true and false).\n", - "type": "boolean" - }, - "cancelMode": { - "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n", - "type": "string", - "enum": ["GRACEFUL", "FORCEFUL"] - }, - "error": { - "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807, the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807.\n", - "type": "object", - "required": ["status", "detail"], - "properties": { - "type": { - "description": "A URI reference according to IETF RFC 3986 that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operationState": { + "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The LCM operation has been completed successfully. FAILED_TEMP: The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED: The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK: The LCM operation is currently being rolled back. ROLLED_BACK: The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n", + "type": "string", + "enum": [ + "STARTING", + "PROCESSING", + "COMPLETED", + "FAILED_TEMP", + "FAILED", + "ROLLING_BACK", + "ROLLED_BACK" + ] + }, + "stateEnteredTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", - "format": "URI" - }, - "title": { - "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "format": "date-time" + }, + "startTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "status": { - "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", - "type": "integer" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem.\n", + }, + "grantId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "instance": { - "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + }, + "operation": { + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", - "format": "URI" - } - } - }, - "resourceChanges": { - "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n", - "type": "object", - "properties": { - "affectedVnfcs": { - "description": "Information about VNFC instances that were affected during the lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary VNFCs.\nNOTE:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer \n (i.e. the NFVO) to assist in correlating the resource changes performed during \n the LCM operation with the granted resources in a specific Grant exchange, which \n is identified by the \"grantId\" available in the \"Individual VNF lifecycle management \n operation occurrence\" and the \"id\" in the \"Individual Grant\".\n", - "type": "object", - "required": ["id", "vduId", "changeType", "computeResource"], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", - "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"] - }, - "computeResource": { - "required": ["resourceId"], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "resourceDefinitionId": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" - }, - "zoneId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "enum": [ + "INSTANTIATE", + "SCALE", + "SCALE_TO_LEVEL", + "CHANGE_FLAVOUR", + "TERMINATE", + "HEAL", + "OPERATE", + "CHANGE_EXT_CONN", + "MODIFY_INFO", + "CREATE_SNAPSHOT", + "REVERT_TO_SNAPSHOT", + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" + ] + }, + "isAutomaticInvocation": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "operationParams": { + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. \nThe following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest * SELECT_DEPL_MODS: SelectVnfDeployableModulesRequest\n", + "type": "object" + }, + "isCancelPending": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + }, + "cancelMode": { + "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n", + "type": "string", + "enum": ["GRACEFUL", "FORCEFUL"] + }, + "error": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807, the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807.\n", + "type": "object", + "required": ["status", "detail"], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" }, - "affectedVnfcCpIds": { - "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", "type": "string" - } }, - "addedStorageResourceIds": { - "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" }, - "removedStorageResourceIds": { - "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", "type": "string" - } + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" } - } } - }, - "affectedVirtualLinks": { - "description": "Information about VL instances that were affected during the lifecycle operation. See notes 1 and 3.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\nNOTE 1:\tWhen signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, \n the \"networkResource\" and \"resourceDefinitionId\" attributes refer to the affected virtual link \n instance, not the link port instance. The resource handles of the affected VNF link ports can be \n found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\nNOTE 2:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer (i.e. the NFVO) to \n assist in correlating the resource changes performed during the LCM operation with the granted \n resources in a specific Grant exchange, which is identified by the \"grantId\" available in the \n \"Individual VNF lifecycle management operation occurrence\" and the \"id\" in the \"Individual Grant\".\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "changeType", - "networkResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change.\nPermitted values: -\tADDED -\tREMOVED -\tMODIFIED -\tTEMPORARY -\tLINK_PORT_ADDED -\tLINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. See note 1.\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY", - "LINK_PORT_ADDED", - "LINK_PORT_REMOVED" - ] + }, + "resourceChanges": { + "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n", + "type": "object", + "properties": { + "affectedVnfcs": { + "description": "Information about VNFC instances that were affected during the lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VNFCs.\nNOTE:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer \n (i.e. the NFVO) to assist in correlating the resource changes performed during \n the LCM operation with the granted resources in a specific Grant exchange, which \n is identified by the \"grantId\" available in the \"Individual VNF lifecycle management \n operation occurrence\" and the \"id\" in the \"Individual Grant\".\n", + "type": "object", + "required": ["id", "vduId", "changeType", "computeResource"], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"] + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "affectedVnfcCpIds": { + "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "addedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "removedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } }, - "networkResource": { + "affectedVirtualLinks": { + "description": "Information about VL instances that were affected during the lifecycle operation. See notes 1 and 3.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\nNOTE 1:\tWhen signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, \n the \"networkResource\" and \"resourceDefinitionId\" attributes refer to the affected virtual link \n instance, not the link port instance. The resource handles of the affected VNF link ports can be \n found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\nNOTE 2:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer (i.e. the NFVO) to \n assist in correlating the resource changes performed during the LCM operation with the granted \n resources in a specific Grant exchange, which is identified by the \"grantId\" available in the \n \"Individual VNF lifecycle management operation occurrence\" and the \"id\" in the \"Individual Grant\".\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "changeType", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change.\nPermitted values: -\tADDED -\tREMOVED -\tMODIFIED -\tTEMPORARY -\tLINK_PORT_ADDED -\tLINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. See note 1.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY", + "LINK_PORT_ADDED", + "LINK_PORT_REMOVED" + ] + }, + "networkResource": { "required": ["resourceId"], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "vnfLinkPortIds": { + "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references a \"VnfLinkPortInfo\" structure.\nShall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related \"VnfLinkPortInfo\" structures are present (case \"added\") or have been present (case \"removed\") in the \"VnfVirtualLinkResourceInfo\" or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResource┬¼Info\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. See note 1.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } - } }, - "vnfLinkPortIds": { - "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references a \"VnfLinkPortInfo\" structure.\nShall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related \"VnfLinkPortInfo\" structures are present (case \"added\") or have been present (case \"removed\") in the \"VnfVirtualLinkResourceInfo\" or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResource¬Info\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. See note 1.\n", - "type": "array", - "items": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - } - }, - "resourceDefinitionId": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" - }, - "zoneId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "affectedExtLinkPorts": { - "description": "Information about external VNF link ports that were affected during the lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\nNOTE:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer (i.e. the NFVO) to assist in correlating \n the resource changes performed during the LCM operation with the granted resources in a specific Grant exchange, which \n is identified by the \"grantId\" available in the \"Individual VNF lifecycle management operation occurrence\" and the \"id\" \n in the \"Individual Grant\".\n", - "type": "object", - "required": [ - "id", - "changeType", - "extCpInstanceId", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: -\tADDED - MODIFIED -\tREMOVED\n", - "type": "string", + "affectedExtLinkPorts": { + "description": "Information about external VNF link ports that were affected during the lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\nNOTE:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer (i.e. the NFVO) to assist in correlating \n the resource changes performed during the LCM operation with the granted resources in a specific Grant exchange, which \n is identified by the \"grantId\" available in the \"Individual VNF lifecycle management operation occurrence\" and the \"id\" \n in the \"Individual Grant\".\n", + "type": "object", + "required": [ + "id", + "changeType", + "extCpInstanceId", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: -\tADDED - MODIFIED -\tREMOVED\n", + "type": "string", "enum": ["ADDED", "MODIFIED", "REMOVED"] - }, - "extCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { + }, + "extCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { "required": ["resourceId"], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + } } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } - } - }, - "resourceDefinitionId": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" - } - } - } - }, - "affectedVirtualStorages": { - "description": "Information about virtualised storage instances that were affected during the lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\nNOTE:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer (i.e. the NFVO) to \n assist in correlating the resource changes performed during the LCM operation with the granted \n resources in a specific Grant exchange, which is identified by the \"grantId\" available in the \n \"Individual VNF lifecycle management operation occurrence\" and the \"id\" in the \"Individual Grant\".\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "changeType", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", - "type": "string", + "affectedVirtualStorages": { + "description": "Information about virtualised storage instances that were affected during the lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\nNOTE:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer (i.e. the NFVO) to \n assist in correlating the resource changes performed during the LCM operation with the granted \n resources in a specific Grant exchange, which is identified by the \"grantId\" available in the \n \"Individual VNF lifecycle management operation occurrence\" and the \"id\" in the \"Individual Grant\".\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "changeType", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", + "type": "string", "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"] - }, - "storageResource": { + }, + "storageResource": { "required": ["resourceId"], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "resourceDefinitionId": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } - } + } + } + }, + "changedInfo": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\nNOTE:\tIf present, this attribute (which depends on the value of the \"vnfdId\" attribute) \n was modified implicitly following a request to modify the \"vnfdId\" attribute, by \n copying the value of this attribute from the VNFD in the VNF Package identified by \n the \"vnfdId\" attribute.\n", + "type": "object", + "properties": { + "vnfInstanceName": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" }, - "resourceDefinitionId": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" + "vnfInstanceDescription": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" }, - "zoneId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" }, "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - } - } - }, - "changedInfo": { - "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\nNOTE:\tIf present, this attribute (which depends on the value of the \"vnfdId\" attribute) \n was modified implicitly following a request to modify the \"vnfdId\" attribute, by \n copying the value of this attribute from the VNFD in the VNF Package identified by \n the \"vnfdId\" attribute.\n", - "type": "object", - "properties": { - "vnfInstanceName": { - "description": "A string defined in IETF RFC 8259.\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "A string defined in IETF RFC 8259.\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "vimConnectionInfo": { - "description": "If present, this attribute signals modifications the \"vimConnectionInfo\" attribute array in \"VnfInstance\".\n", - "type": "object", - "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", - "type": "object", + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vimConnectionInfo": { + "description": "If present, this attribute signals modifications the \"vimConnectionInfo\" attribute array in \"VnfInstance\".\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", + "type": "object", "required": ["vimType"], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", - "type": "string" + "vnfdId": { + "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" + "vnfProvider": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" }, - "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" + "vnfProductName": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "vnfdVersion": { + "description": "A version.\n", + "type": "string" } - } } - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "A string defined in IETF RFC 8259.\n", - "type": "string" - }, - "vnfProductName": { - "description": "A string defined in IETF RFC 8259.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - } - } - }, - "affectedVipCps": { - "description": "Information about virtual IP CP instances that were affected during the execution of the lifecycle management operation.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified virtual IP CP instances.\n", - "type": "object", + }, + "affectedVipCps": { + "description": "Information about virtual IP CP instances that were affected during the execution of the lifecycle management operation.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified virtual IP CP instances.\n", + "type": "object", "required": ["cpInstanceId", "cpdId", "changeType"], - "properties": { - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED -\tMODIFIED\n", - "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED"] - } - } - } - }, - "changedExtConnectivity": { - "description": "Information about changed external connectivity, if applicable. See note 1.\n", - "type": "array", - "items": { - "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", - "type": "object", - "required": ["id", "resourceHandle", "currentVnfExtCpData"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": ["resourceId"], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "properties": { + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "changeType": { + "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED -\tMODIFIED\n", + "type": "string", + "enum": ["ADDED", "REMOVED", "MODIFIED"] } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", + } + }, + "changedExtConnectivity": { + "description": "Information about changed external connectivity, if applicable. See note 1.\n", + "type": "array", + "items": { + "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": ["id", "resourceHandle", "currentVnfExtCpData"], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": ["resourceId"], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { + "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + }, + "resourceHandle": { + "required": ["resourceId"], "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "secondaryCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "currentVnfExtCpData": { - "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", - "type": "array", - "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", - "type": "object", + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": ["resourceId"], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "secondaryCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for \n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only \n required to configure one cpConfig per cpdId, not per VNFC instance. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version.\n", + "type": "object", "required": ["cpdId"], - "properties": { - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", - "anyOf": [ - { + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "anyOf": [ + { "required": ["linkPortId"] - }, - { + }, + { "required": ["cpProtocolData"] - }, - { + }, + { "required": ["netAttDefResourceId"] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "createExtLinkPort": { + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "type": "boolean" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", + "type": "array", + "items": { + "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationType": { + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values:\n -\tVLAN: the subport uses VLAN as encapsulation type.\n -\tINHERIT: the subport gets its segmentation type from the network it's connected to.\nThis attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "type": "string", + "enum": [ + "VLAN", + "INHERIT" + ] + }, + "segmentationId": { + "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes┬« that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", + "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + } + } + } + } + } + } + } + } + } + } } - ], - "type": "object", - "properties": { - "parentCpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "linkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "createExtLinkPort": { - "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", - "type": "boolean" - }, - "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceData” structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "cpProtocolData": { - "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", - "type": "array", - "items": { - "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", + }, + "extNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], "properties": { - "layerProtocol": { - "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI’s transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": ["macAddress"] - }, - { - "required": ["ipAddresses"] - } - ], - "oneOf": [ - { - "required": ["fixedAddresses"] - }, - { - "required": ["numDynamicAddresses"] - }, - { - "required": ["ipAddressRange"] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", - "type": "string", - "enum": ["VLAN", "INHERIT"] - }, - "segmentationId": { - "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "ipAddresses": { - "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", - "type": "array", - "items": { - "type": "object", - "required": ["type"], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": ["IPV4", "IPV6"] + }, + "netAttDefResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "fixedAddresses": { - "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "numDynamicAddresses": { - "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "integer" + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" }, - "addressRange": { - "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } } - } }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" } - } } - } - } - }, - "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", - "type": "object", - "required": ["type"], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": ["IPV4", "IPV6"] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } + }, + "associatedExtCpId": { + "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } } - } } - } } - } } - } } - } - }, - "extNetAttDefResource": { - "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", - "type": "array", - "items": { - "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", - "type": "object", - "required": ["netAttDefResourceInfoId", "netAttDefResource"], - "properties": { - "netAttDefResourceInfoId": { + } + }, + "modificationsTriggeredByVnfPkgChange": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\nNOTE 1:\tThis attribute represents the delta (semantics as per IETF RFC 7396, JSON Merge Patch) between the value \n of the attribute at the start of the \"Change current VNF package\" operation and the value of the attribute \n at its completion.\nNOTE 2:\tIf present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly \n during the related operation and contains a copy of the value of the related attribute from the VNFD in the \n VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "object", + "properties": { + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vnfdId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "netAttDefResource": { - "required": ["resourceId"], + }, + "vnfProvider": { + "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". See note 2.\n", + "type": "string" + }, + "vnfProductName": { + "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". See note 2.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vimConnectionInfo": { + "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure.\n", "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", + "type": "object", + "required": [ + "vimType" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "vnfSnapshotInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "lcmCoordinations": { + "description": "Information about LCM coordination actions (see clause 10 in ETSI GS NFV-SOL002) related to this LCM operation occurrence.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "coordinationActionName", + "startTime", + "endpointType" + ], + "properties": { + "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "resourceProviderId": { + }, + "coordinationActionName": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + }, + "coordinationResult": { + "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\".\n", + "type": "string", + "enum": [ + "CONTINUE", + "ABORT", + "CANCELLED" + ] + }, + "startTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "delay": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endpointType": { + "description": "The endpoint type used by this coordination action. Valid values: ΓÇó\tMGMT: coordination with other operation supporting management systems (e.g. EM) ΓÇó\tVNF: coordination with the VNF instance\n", + "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.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "coordinationActionName", + "rejectionTime", + "endpointType", + "delay" + ], + "properties": { + "coordinationActionName": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + }, + "rejectionTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "delay": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endpointType": { + "description": "The endpoint type used by this coordination action. Valid values: ΓÇó\tMGMT: coordination with other operation supporting management systems (e.g. EM) ΓÇó\tVNF: coordination with the VNF instance\n", + "type": "string", + "enum": [ + "MGMT", + "VNF" + ] + } + } + } + }, + "warnings": { + "description": "Warning messages that were generated while the operation was executing.\nIf the operation has included LCM coordination actions and these have resulted in warnings, such warnings should be added to this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "vnfInstance" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + } + } + }, + "vnfInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } } - }, - "associatedExtCpId": { - "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" + }, + "grant": { + "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" + } } - }, - "associatedVnfcCpId": { - "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" + }, + "cancel": { + "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" + } } - } - } - } - } - } - } - }, - "modificationsTriggeredByVnfPkgChange": { - "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\nNOTE 1:\tThis attribute represents the delta (semantics as per IETF RFC 7396, JSON Merge Patch) between the value \n of the attribute at the start of the \"Change current VNF package\" operation and the value of the attribute \n at its completion.\nNOTE 2:\tIf present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly \n during the related operation and contains a copy of the value of the related attribute from the VNFD in the \n VNF Package identified by the \"vnfdId\" attribute.\n", - "type": "object", - "properties": { - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". See note 2.\n", - "type": "string" - }, - "vnfProductName": { - "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". See note 2.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - }, - "vimConnectionInfo": { - "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", - "type": "object", - "required": ["vimType"], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", - "type": "string" + "retry": { + "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" + } + } }, - "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" + "rollback": { + "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" + } + } }, - "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" + "fail": { + "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" + } + } }, - "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" + "vnfSnapshot": { + "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" + } + } } - } - } - } - } - }, - "vnfSnapshotInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "lcmCoordinations": { - "description": "Information about LCM coordination actions (see clause 10 in ETSI GS NFV-SOL002) related to this LCM operation occurrence.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "coordinationActionName", - "startTime", - "endpointType" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "coordinationActionName": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "coordinationResult": { - "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\".\n", - "type": "string", - "enum": ["CONTINUE", "ABORT", "CANCELLED"] - }, - "startTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "endTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "delay": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", - "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.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "coordinationActionName", - "rejectionTime", - "endpointType", - "delay" - ], - "properties": { - "coordinationActionName": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "rejectionTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "delay": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", - "type": "string", - "enum": ["MGMT", "VNF"] - } - } - } - }, - "warnings": { - "description": "Warning messages that were generated while the operation was executing.\nIf the operation has included LCM coordination actions and these have resulted in warnings, such warnings should be added to this attribute.\n", - "type": "array", - "items": { - "type": "string" - } - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": ["self", "vnfInstance"], - "properties": { - "self": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "vnfInstance": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "grant": { - "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" - } - } - }, - "cancel": { - "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" - } - } - }, - "retry": { - "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" - } - } - }, - "rollback": { - "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" - } - } - }, - "fail": { - "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" - } - } - }, - "vnfSnapshot": { - "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" - } } - } } - } } } } diff --git a/interconnectedTestCases/SOL003/schemas/vnfInstance.schema.json b/interconnectedTestCases/SOL003/schemas/vnfInstance.schema.json index 0fb54dee..1637e5ef 100644 --- a/interconnectedTestCases/SOL003/schemas/vnfInstance.schema.json +++ b/interconnectedTestCases/SOL003/schemas/vnfInstance.schema.json @@ -1,239 +1,1811 @@ { - "description": "This type represents a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vnfdId", - "vnfProvider", - "vnfProductName", - "vnfSoftwareVersion", - "vnfdVersion", - "instantiationState" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstanceName": { - "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfProductName": { - "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "vimConnectionInfo": { - "description": "Information about VIM connections to be used for managing the resources for the VNF instance. This attribute shall only be supported and present if VNF-related resource management in direct mode is applicable. This attribute can be modified with the PATCH method.\n", - "type": "array", - "items": { - "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.\n", + "description": "This type represents a VNF instance.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "instantiationState", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vimConnectionInfo": { + "description": "Information about VIM or CISM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if - the resources of at least of the VNFCs are managed by a VIM and VNF-related resource management in direct mode is applicable. - the resources of at least of the VNFCs are managed by a CISM. This attribute can be modified with the PATCH method. If VIM connection information is provisioned to the VNFM by means outside the scope of the present document, the information in the \"vimConnectionInfo\" attribute provides necessary information for binding the VnfInstance representing the \"Individual VNF instance\" to the applicable VIM connection information used to perform resource management for the VNF instance. See also the definition of the \"VimConnectionInfo\" in clause 4.4.1.6.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", + "type": "object", + "required": [ + "vimType" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "cirConnectionInfo": { + "description": "Information about the CIR connection for managing OS container images for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", + "type": "object", + "required": [ + "vimType" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "mciopRepositoryInfo": { + "description": "Information about the MCIOP repository for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise. See note 1.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", + "type": "object", + "required": [ + "vimType" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "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": [ - "id", - "vimType" + "securityPolicy" ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", - "type": "string" + "certificateBaseProfile": { + "description": "Information for certificate profile.", + "type": "array", + "items": { + "description": "NOTE: At least one overriding attributes shall be present, otherwise shall be absent.\nThis type provides input information to override certificate base profile for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "issuer": { + "description": "Issuer of certificates. See note.", + "type": "string" + }, + "issuerUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subject": { + "description": "This type provides input information related to the subject of the certificate.\nNOTE: At least one overriding attributes shall be present, otherwise shall be absent.\n", + "type": "object", + "properties": { + "commonName": { + "description": "Information of the certification target subject FQDN. Can be set empty when this certificate is used for encrypted communication using IP address. See note.\n", + "type": "string" + }, + "organization": { + "description": "Information of the certification target subject Organization. See note.", + "type": "string" + }, + "country": { + "description": "Information of the certification target subject Country. See note.", + "type": "string" + }, + "state": { + "description": "Information of the certification target subject State. See note.", + "type": "string" + }, + "locality": { + "description": "Information of the certification target subject Locality. See note.", + "type": "string" + }, + "emailAddress": { + "description": "Information of the certification contact email address. See note.", + "type": "string" + } + } + }, + "subjectUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "basicConstraints": { + "description": "Basic constraints of certificates. See note.", + "type": "string" + }, + "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 [14], clause 7.1.19.4). See note.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "nameConstraints": { + "description": "Name constraints of certificates. See note.", + "type": "array", + "items": { + "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" + "securityPolicy": { + "description": "Information for security policy to be satisfied for certificate.", + "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": "number" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.", + "type": "string" + }, + "minimumKeyLength": { + "description": "Minimum key length for certificates.", + "type": "number" + } + } + } }, - "accessInfo": { + "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" }, - "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" + "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", + "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" + } + } + } + } + }, + "supportedProtocol": { + "description": "Supported protocols by CMF instance.", + "type": "array", + "items": { + "description": "Supported protocol by CMF instance.", + "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.\nNOTE: The CertificateDesc data type is defined in clause 7.1.19.2 of ETSI GS NFV IFA 011 [10].\n", + "type": "object", + "required": [ + "id", + "certificateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateDescId": { + "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", - "enum": [ - "NOT_INSTANTIATED", - "INSTANTIATED" - ] - }, - "instantiatedVnfInfo": { - "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", - "type": "object", - "required": [ - "flavourId", - "vnfState" - ], - "properties": { - "flavourId": { + } + }, + "instantiationState": { + "description": "The instantiation state of the VNF. Permitted values: - NOT_INSTANTIATED: The VNF instance is terminated or not instantiated. - INSTANTIATED: The VNF instance is instantiated.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", + "type": "object", + "required": [ + "flavourId", + "vnfState" + ], + "properties": { + "flavourId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfState": { + "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\nThis attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\nFor 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", + "type": "object", + "required": [ + "aspectId", + "scaleLevel" + ], + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleToLevel": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", + "type": "object", + "required": [ + "aspectId", + "scaleLevel" + ], + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleToLevel": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "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" - }, - "vnfState": { - "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", - "type": "string", - "enum": [ - "STARTED", - "STOPPED" - ] - }, - "scaleStatus": { - "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", - "type": "array", - "items": { - "required": [ - "aspectId", - "scaleLevel" - ], - "type": "object", - "properties": { - "aspectId": { + } + }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes.\nThe tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request.\nAt most one tag can be included when the data type is used in a VNF LCM operation request.\nWhen the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.\n", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "type": { + "description": "Type of the resource definition referenced.\n", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" + ] + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute 'type' indicates OSCONTAINER and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource. See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note.\n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resource property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD (clause 6.2.7.2 in ETSI GS NFV-SOL 001 [14]) for this virtual compute descriptor. The value is a numberthat indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD (clause 6.2.7.2 in ETSI GS NFV-SOL 001 [14]) that indicates the valid vaues for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource.\n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", + "type": "array", + "items": { + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [ + { + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVipCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "associatedVipCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "associatedVirtualCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "vipCpInfo": { + "description": "VIP CPs that are part of the VNF instance. Shall be present when that particular VIP CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type provides information related to virtual IP (VIP) CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "cpInstanceId", + "cpdId" + ], + "properties": { + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for layer 3. There may be one cpProtocolInfo for layer 2.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "associatedVnfcCpIds": { + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "virtualCpInfo": { + "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular Virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\nNOTE 2: The information can be omitted because it is already available as part of the external CP information in the \n VnfExtCpInfo structure.\n", + "type": "object", + "required": [ + "cpInstanceId", + "cpdId", + "resourceHandle", + "vduIds" + ], + "properties": { + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "vduIds": { + "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note 1.\n", + "type": "array", + "minItems": 1, + "items": { "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" - }, - "scaleLevel": { - "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", - "type": "integer" } + }, + "additionalServiceInfo": { + "description": "Additional service identification information of the virtual CP instance.\n", + "type": "array", + "items": { + "description": "This type provides additional service information of the virtual CP instance used to expose properties of the virtual CP to NFV-MANO.\nNOTE: This attribute shall only be present if additional information is needed to identify the service \n termination within the VNF, such as for example a URL path information in an HTTP request required \n to allow a single virtual CP IP address to be used for several HTTP based services that use the \n same port number.\n", + "type": "object", + "required": [ + "portInfo" + ], + "properties": { + "portInfo": { + "description": "Service port numbers exposed by the virtual CP instance.\n", + "minItems": 1, + "type": "array", + "items": { + "description": "This type describes the service identifying port properties exposed by the virtual CP instance.\n", + "type": "object", + "required": [ + "name", + "port", + "portConfigurable" + ], + "properties": { + "name": { + "description": "The name of the port exposed by the virtual CP instance.\n", + "type": "string" + }, + "protocol": { + "description": "The L4 protocol for this port exposed by the virtual CP instance.\nPermitted values: - TCP - UDP - SCTP\n", + "type": "string", + "enum": [ + "TCP", + "UDP", + "SCTP" + ] + }, + "port": { + "description": "The L4 port number exposed by the virtual CP instance.\n", + "type": "integer" + }, + "portConfigurable": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + } + } + } + }, + "serviceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } - }, - "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance.\n", - "type": "array", - "minItems": 1, - "items": { - "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.\n", - "type": "object", - "required": [ - "id", - "cpdId", - "cpProtocolInfo" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", - "required": [ - "layerProtocol" - ], + } + }, + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", "properties": { - "layerProtocol": { - "description": "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.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\n", + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "secondaryCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for \n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only \n required to configure one cpConfig per cpdId, not per VNFC instance. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "anyOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + }, + { + "required": [ + "netAttDefResourceId" + ] + } + ], "type": "object", "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "createExtLinkPort": { + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "type": "boolean" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", "type": "array", "items": { + "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", "type": "object", "required": [ - "type" + "layerProtocol" ], "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", "type": "string", "enum": [ - "IPV4", - "IPV6" + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" ] }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationType": { + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values:\n -\tVLAN: the subport uses VLAN as encapsulation type.\n -\tINHERIT: the subport gets its segmentation type from the network it's connected to.\nThis attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "type": "string", + "enum": [ + "VLAN", + "INHERIT" + ] + }, + "segmentationId": { + "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } } }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "virtualCpAddress": { + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes┬« that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", "type": "object", "required": [ - "minAddress", - "maxAddress" + "type" ], "properties": { - "minAddress": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" }, - "maxAddress": { + "externalIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", + "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } } } - }, - "subnetId": { - "description": "An 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" } } } @@ -242,751 +1814,1234 @@ } } } - }, - "extLinkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "associatedVnfcCpId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "associatedVnfVirtualLinkId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" } - } - } - }, - "extVirtualLinkInfo": { - "description": "Information about the external VLs the VNF instance is connected to.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { + }, + "extNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", + "type": "object", "required": [ - "vimConnectionId", - "resourceId" + "netAttDefResourceInfoId", + "netAttDefResource" ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", "properties": { - "vimConnectionId": { + "netAttDefResourceInfoId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "netAttDefResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" + "associatedExtCpId": { + "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } } } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", + } + } + } + } + }, + "extManagedVirtualLinkInfo": { + "description": "Information about the externally-managed internal VLs of the VNF instance. See notes 5 and 6.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "required": [ - "id", - "resourceHandle" - ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } } } - } - } - }, - "extManagedVirtualLinkInfo": { - "description": "External virtual links the VNF instance is connected to.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "networkResource": { + }, + "vnfNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", + "type": "object", "required": [ - "vimConnectionId", - "resourceId" + "netAttDefResourceInfoId", + "netAttDefResource" ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", "properties": { - "vimConnectionId": { + "netAttDefResourceInfoId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "netAttDefResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" + "associatedExtCpId": { + "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } } } - }, - "vnfLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { + } + }, + "extManagedMultisiteVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "monitoringParameters": { + "description": "Active monitoring parameters.\n", + "type": "array", + "items": { + "description": "This type represents a monitoring parameter that is tracked by the VNFM,\n", + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. \nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "required": [ - "id", - "resourceHandle" - ], "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "cpInstanceType": { - "description": "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.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" } } - } - } - }, - "monitoringParameters": { - "description": "Active monitoring parameters.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "performanceMetric" - ], - "properties": { - "id": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "name": { - "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", - "type": "string" - }, - "performanceMetric": { - "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", - "type": "string" - } - } - } - }, - "localizationLanguage": { - "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", - "type": "string" - }, - "vnfcResourceInfo": { - "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources or references to Storage MCIOs. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "computeResource": { + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "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. See note 7.\n", + "type": "array", + "items": { + "type": "object", "required": [ - "vimConnectionId", - "resourceId" + "id", + "cpdId" ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "cpdId" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "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.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\n", - "type": "object", - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. See note 3.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "array", - "items": { + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } } } } } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } } } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "virtualLinkResourceInfo": { - "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "parentCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" } } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "vnfVirtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance. See note 6.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires including\n a related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the\n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "required": [ - "id", - "resourceHandle" - ], "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "resourceHandle": { - "required": [ - "vimConnectionId", - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "cpInstanceType": { - "description": "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.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } - } - } - }, - "virtualStorageResourceInfo": { - "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "storageResource": { + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", + "type": "object", "required": [ - "vimConnectionId", - "resourceId" + "id", + "resourceHandle" ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" } } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": [ - "self" - ], - "properties": { - "self": { - "description": "This type represents a link to a resource using an absolute URI.\n", + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence\n notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ - "href" + "id", + "virtualStorageDescId", + "storageResource" ], "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - } - } - }, - "indicators": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" - } - } - }, - "instantiate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - } - } - }, - "terminate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - } - } - }, - "scale": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } - }, - "scaleToLevel": { - "description": "This type represents a link to a resource using an absolute URI.\n", + } + }, + "mcioInfo": { + "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ - "href" + "mcioId", + "mcioName", + "mcioNamespace", + "vduId", + "cismId", + "mcioType", + "desiredInstances", + "availableInstances" ], "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", + "mcioId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - } - } - }, - "changeFlavour": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", + }, + "mcioName": { + "description": "Human readable name of this MCIO. See note 4.\n", "type": "string" - } - } - }, - "heal": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", + }, + "mcioNamespace": { + "description": "Namespace of this MCIO.\n", "type": "string" - } - } - }, - "operate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cismId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "mcioType": { + "description": "The type of MCIO. Specific values, their semantics and associated MCIO types are defined in clause 5.5.4.9. Additional values are also permitted. See note 1.\n", + "type": "string", + "enum": [ + "Deployment", + "Statefulset", + "DaemonSet" + ] + }, + "desiredInstances": { + "description": "Number of desired MCIO instances.\n", + "type": "integer" + }, + "availableInstances": { + "description": "Number of available MCIO instances.\n", + "type": "integer" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" } } - }, - "changeExtConn": { - "description": "This type represents a link to a resource using an absolute URI.\n", + } + }, + "vnfPaasServiceInfo": { + "description": "Information on the PaaS Services assigned and used by the VNF instance.\n", + "type": "array", + "items": { + "description": "This type provides input 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": [ - "href" + "id", + "paasServiceId", + "paasServiceType", + "paasServiceRequestId", + "paasServiceHandle" ], "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", + "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.", + "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" } } } } } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "indicators": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "instantiate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "terminate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scale": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scaleToLevel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeFlavour": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "heal": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "operate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeExtConn": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "createSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "revertToSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeCurrentVnfPkg": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } } - } \ No newline at end of file + } +} \ No newline at end of file diff --git a/interconnectedTestCases/SOL003/schemas/vnfInstances.schema.json b/interconnectedTestCases/SOL003/schemas/vnfInstances.schema.json index ae54b054..13a3e3b3 100644 --- a/interconnectedTestCases/SOL003/schemas/vnfInstances.schema.json +++ b/interconnectedTestCases/SOL003/schemas/vnfInstances.schema.json @@ -1,7 +1,7 @@ { "type": "array", "items": { - "description": "This type represents a VNF instance.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -10,7 +10,8 @@ "vnfProductName", "vnfSoftwareVersion", "vnfdVersion", - "instantiationState" + "instantiationState", + "_links" ], "properties": { "id": { @@ -50,26 +51,87 @@ "type": "object" }, "vimConnectionInfo": { - "description": "Information about VIM connections to be used for managing the resources for the VNF instance. This attribute shall only be supported and present if VNF-related resource management in direct mode is applicable. This attribute can be modified with the PATCH method.\n", - "type": "array", - "items": { - "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.\n", + "description": "Information about VIM or CISM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if - the resources of at least of the VNFCs are managed by a VIM and VNF-related resource management in direct mode is applicable. - the resources of at least of the VNFCs are managed by a CISM. This attribute can be modified with the PATCH method. If VIM connection information is provisioned to the VNFM by means outside the scope of the present document, the information in the \"vimConnectionInfo\" attribute provides necessary information for binding the VnfInstance representing the \"Individual VNF instance\" to the applicable VIM connection information used to perform resource management for the VNF instance. See also the definition of the \"VimConnectionInfo\" in clause 4.4.1.6.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", + "type": "object", + "required": [ + "vimType" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "cirConnectionInfo": { + "description": "Information about the CIR connection for managing OS container images for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ - "id", "vimType" ], "properties": { - "id": { + "vimId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "mciopRepositoryInfo": { + "description": "Information about the MCIOP repository for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise. See note 1.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", + "type": "object", + "required": [ + "vimType" + ], + "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -84,72 +146,1019 @@ "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" } - } - } - }, - "instantiationState": { - "description": "The instantiation state of the VNF.\n", - "type": "string", - "enum": [ - "NOT_INSTANTIATED", - "INSTANTIATED" - ] - }, - "instantiatedVnfInfo": { - "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", - "type": "object", - "required": [ - "flavourId", - "vnfState" - ], - "properties": { - "flavourId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfState": { - "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", - "type": "string", - "enum": [ - "STARTED", - "STOPPED" - ] + } + } + }, + "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": "Information for certificate profile.", + "type": "array", + "items": { + "description": "NOTE: At least one overriding attributes shall be present, otherwise shall be absent.\nThis type provides input information to override certificate base profile for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "issuer": { + "description": "Issuer of certificates. See note.", + "type": "string" + }, + "issuerUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subject": { + "description": "This type provides input information related to the subject of the certificate.\nNOTE: At least one overriding attributes shall be present, otherwise shall be absent.\n", + "type": "object", + "properties": { + "commonName": { + "description": "Information of the certification target subject FQDN. Can be set empty when this certificate is used for encrypted communication using IP address. See note.\n", + "type": "string" + }, + "organization": { + "description": "Information of the certification target subject Organization. See note.", + "type": "string" + }, + "country": { + "description": "Information of the certification target subject Country. See note.", + "type": "string" + }, + "state": { + "description": "Information of the certification target subject State. See note.", + "type": "string" + }, + "locality": { + "description": "Information of the certification target subject Locality. See note.", + "type": "string" + }, + "emailAddress": { + "description": "Information of the certification contact email address. See note.", + "type": "string" + } + } + }, + "subjectUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "basicConstraints": { + "description": "Basic constraints of certificates. See note.", + "type": "string" + }, + "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 [14], clause 7.1.19.4). See note.\n", + "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.", + "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": "number" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.", + "type": "string" + }, + "minimumKeyLength": { + "description": "Minimum key length for certificates.", + "type": "number" + } + } + } + }, + "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", + "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" + } + } + } + } + }, + "supportedProtocol": { + "description": "Supported protocols by CMF instance.", + "type": "array", + "items": { + "description": "Supported protocol by CMF instance.", + "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.\nNOTE: The CertificateDesc data type is defined in clause 7.1.19.2 of ETSI GS NFV IFA 011 [10].\n", + "type": "object", + "required": [ + "id", + "certificateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateDescId": { + "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. Permitted values: - NOT_INSTANTIATED: The VNF instance is terminated or not instantiated. - INSTANTIATED: The VNF instance is instantiated.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", + "type": "object", + "required": [ + "flavourId", + "vnfState" + ], + "properties": { + "flavourId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfState": { + "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\nThis attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\nFor 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", + "type": "object", + "required": [ + "aspectId", + "scaleLevel" + ], + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleToLevel": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", + "type": "array", + "items": { + "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", + "type": "object", + "required": [ + "aspectId", + "scaleLevel" + ], + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleToLevel": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "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" + } + }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes.\nThe tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request.\nAt most one tag can be included when the data type is used in a VNF LCM operation request.\nWhen the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.\n", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "type": { + "description": "Type of the resource definition referenced.\n", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" + ] + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute 'type' indicates OSCONTAINER and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource. See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note.\n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resource property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD (clause 6.2.7.2 in ETSI GS NFV-SOL 001 [14]) for this virtual compute descriptor. The value is a numberthat indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD (clause 6.2.7.2 in ETSI GS NFV-SOL 001 [14]) that indicates the valid vaues for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource.\n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", + "type": "array", + "items": { + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [ + { + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVipCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "associatedVipCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "associatedVirtualCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } }, - "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", + "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.\n", "type": "array", + "minItems": 1, "items": { + "description": "This type provides information related to virtual IP (VIP) CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", "required": [ - "aspectId", - "scaleLevel" + "cpInstanceId", + "cpdId" ], - "type": "object", "properties": { - "aspectId": { + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, - "scaleLevel": { - "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", - "type": "integer" + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for layer 3. There may be one cpProtocolInfo for layer 2.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "associatedVnfcCpIds": { + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } } }, - "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance.\n", + "virtualCpInfo": { + "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular Virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", - "minItems": 1, "items": { - "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.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\nNOTE 2: The information can be omitted because it is already available as part of the external CP information in the \n VnfExtCpInfo structure.\n", "type": "object", "required": [ - "id", + "cpInstanceId", "cpdId", - "cpProtocolInfo" + "resourceHandle", + "vduIds" ], "properties": { - "id": { + "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, @@ -157,39 +1166,120 @@ "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", "type": "array", "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", "required": [ "layerProtocol" ], "properties": { "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information. 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.\n", + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", "enum": [ - "IP_OVER_ETHERNET" + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", "type": "string", "format": "MAC" }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", "type": "array", "items": { "type": "object", "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -200,7 +1290,7 @@ ] }, "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", "type": "array", "items": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -213,7 +1303,7 @@ "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.\n", + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", "required": [ "minAddress", @@ -232,34 +1322,110 @@ } } }, - "subnetId": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } } } } } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } } } } }, - "extLinkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "vduIds": { + "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note 1.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "additionalServiceInfo": { + "description": "Additional service identification information of the virtual CP instance.\n", + "type": "array", + "items": { + "description": "This type provides additional service information of the virtual CP instance used to expose properties of the virtual CP to NFV-MANO.\nNOTE: This attribute shall only be present if additional information is needed to identify the service \n termination within the VNF, such as for example a URL path information in an HTTP request required \n to allow a single virtual CP IP address to be used for several HTTP based services that use the \n same port number.\n", + "type": "object", + "required": [ + "portInfo" + ], + "properties": { + "portInfo": { + "description": "Service port numbers exposed by the virtual CP instance.\n", + "minItems": 1, + "type": "array", + "items": { + "description": "This type describes the service identifying port properties exposed by the virtual CP instance.\n", + "type": "object", + "required": [ + "name", + "port", + "portConfigurable" + ], + "properties": { + "name": { + "description": "The name of the port exposed by the virtual CP instance.\n", + "type": "string" + }, + "protocol": { + "description": "The L4 protocol for this port exposed by the virtual CP instance.\nPermitted values: - TCP - UDP - SCTP\n", + "type": "string", + "enum": [ + "TCP", + "UDP", + "SCTP" + ] + }, + "port": { + "description": "The L4 port number exposed by the virtual CP instance.\n", + "type": "integer" + }, + "portConfigurable": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + } + } + } + }, + "serviceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } }, "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" - }, - "associatedVnfcCpId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "associatedVnfVirtualLinkId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" } } } @@ -268,10 +1434,12 @@ "description": "Information about the external VLs the VNF instance is connected to.\n", "type": "array", "items": { + "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", "type": "object", "required": [ "id", - "resourceHandle" + "resourceHandle", + "currentVnfExtCpData" ], "properties": { "id": { @@ -280,11 +1448,10 @@ }, "resourceHandle": { "required": [ - "vimConnectionId", "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -295,11 +1462,33 @@ "type": "string" }, "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } @@ -308,7 +1497,7 @@ "description": "Link ports of this VL.\n", "type": "array", "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n", + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", "type": "object", "required": [ "id", @@ -321,11 +1510,10 @@ }, "resourceHandle": { "required": [ - "vimConnectionId", "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -336,11 +1524,33 @@ "type": "string" }, "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } @@ -348,6 +1558,343 @@ "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" + }, + "secondaryCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for \n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only \n required to configure one cpConfig per cpdId, not per VNFC instance. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "anyOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + }, + { + "required": [ + "netAttDefResourceId" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "createExtLinkPort": { + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "type": "boolean" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", + "type": "array", + "items": { + "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationType": { + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values:\n -\tVLAN: the subport uses VLAN as encapsulation type.\n -\tINHERIT: the subport gets its segmentation type from the network it's connected to.\nThis attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "type": "string", + "enum": [ + "VLAN", + "INHERIT" + ] + }, + "segmentationId": { + "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes┬« that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", + "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "extNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", + "type": "object", + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], + "properties": { + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "netAttDefResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "associatedExtCpId": { + "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } } } } @@ -356,13 +1903,14 @@ } }, "extManagedVirtualLinkInfo": { - "description": "External virtual links the VNF instance is connected to.\n", + "description": "Information about the externally-managed internal VLs of the VNF instance. See notes 5 and 6.\n", "type": "array", "items": { "type": "object", "required": [ "id", - "vnfVirtualLinkDescId" + "vnfVirtualLinkDescId", + "networkResource" ], "properties": { "id": { @@ -373,13 +1921,16 @@ "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "networkResource": { "required": [ - "vimConnectionId", "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -390,36 +1941,143 @@ "type": "string" }, "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } }, - "vnfLinkPorts": { - "description": "Link ports of this VL.\n", + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "vnfNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", "type": "array", "items": { + "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", "type": "object", "required": [ - "id", - "resourceHandle" + "netAttDefResourceInfoId", + "netAttDefResource" ], "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceHandle": { + "netAttDefResource": { "required": [ - "vimConnectionId", "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -430,29 +2088,59 @@ "type": "string" }, "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" + "associatedExtCpId": { + "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } }, - "cpInstanceType": { - "description": "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.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } } } } + }, + "extManagedMultisiteVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -461,6 +2149,7 @@ "description": "Active monitoring parameters.\n", "type": "array", "items": { + "description": "This type represents a monitoring parameter that is tracked by the VNFM,\n", "type": "object", "required": [ "id", @@ -471,6 +2160,10 @@ "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "name": { "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", "type": "string" @@ -490,7 +2183,7 @@ "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", "type": "array", "items": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n", + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. \nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", "type": "object", "required": [ "id", @@ -506,13 +2199,16 @@ "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "computeResource": { "required": [ - "vimConnectionId", "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -523,17 +2219,43 @@ "type": "string" }, "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "storageResourceIds": { - "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "description": "References to the VirtualStorage resources or references to Storage MCIOs. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -545,7 +2267,7 @@ "type": "string" }, "vnfcCpInfo": { - "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n", + "description": "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. See note 7.\n", "type": "array", "items": { "type": "object", @@ -567,38 +2289,68 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. See note 3.\n", "type": "array", "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n", + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", "required": [ "layerProtocol" ], "properties": { "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information. 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.\n", + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", "enum": [ - "IP_OVER_ETHERNET" + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", "type": "string", "format": "MAC" }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n", + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", "type": "array", "items": { "type": "object", "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -609,7 +2361,7 @@ ] }, "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). Exactly one of \"addresses\" or \"addressRange\" shall be present.\n", + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", "type": "array", "items": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -622,7 +2374,7 @@ "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.\n", + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", "required": [ "minAddress", @@ -642,14 +2394,39 @@ } }, "subnetId": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } } } } } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } } } } @@ -658,9 +2435,25 @@ "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, + "parentCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -668,15 +2461,19 @@ "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" } } } }, - "virtualLinkResourceInfo": { - "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n", + "vnfVirtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance. See note 6.\n", "type": "array", "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires including\n a related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the\n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ "id", @@ -692,13 +2489,16 @@ "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "networkResource": { "required": [ - "vimConnectionId", "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -709,15 +2509,41 @@ "type": "string" }, "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "reservationId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" @@ -726,6 +2552,7 @@ "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", "type": "array", "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", "required": [ "id", @@ -738,11 +2565,10 @@ }, "resourceHandle": { "required": [ - "vimConnectionId", "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -753,11 +2579,33 @@ "type": "string" }, "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } @@ -767,12 +2615,20 @@ "type": "string" }, "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: VNFC_CP: The link port is connected to a VNFC CP EXT_CP: The link port is associated to an external CP.\n", + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", "type": "string", "enum": [ "VNFC_CP", "EXT_CP" ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } } } @@ -788,7 +2644,7 @@ "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", "type": "array", "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence\n notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ "id", @@ -804,13 +2660,16 @@ "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "storageResource": { "required": [ - "vimConnectionId", "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -821,15 +2680,41 @@ "type": "string" }, "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, "vimLevelResourceType": { - "description": "The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2 in SOL003).\n", + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, "reservationId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" @@ -840,6 +2725,137 @@ } } } + }, + "mcioInfo": { + "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "type": "object", + "required": [ + "mcioId", + "mcioName", + "mcioNamespace", + "vduId", + "cismId", + "mcioType", + "desiredInstances", + "availableInstances" + ], + "properties": { + "mcioId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "mcioName": { + "description": "Human readable name of this MCIO. See note 4.\n", + "type": "string" + }, + "mcioNamespace": { + "description": "Namespace of this MCIO.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cismId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "mcioType": { + "description": "The type of MCIO. Specific values, their semantics and associated MCIO types are defined in clause 5.5.4.9. Additional values are also permitted. See note 1.\n", + "type": "string", + "enum": [ + "Deployment", + "Statefulset", + "DaemonSet" + ] + }, + "desiredInstances": { + "description": "Number of desired MCIO instances.\n", + "type": "integer" + }, + "availableInstances": { + "description": "Number of available MCIO instances.\n", + "type": "integer" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "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 input 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.", + "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" + } + } + } } } }, @@ -987,9 +3003,49 @@ "type": "string" } } + }, + "createSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "revertToSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeCurrentVnfPkg": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } } } } } + } } \ No newline at end of file diff --git a/interconnectedTestCases/SOL003/schemas/vnfPkgInfo.schema.json b/interconnectedTestCases/SOL003/schemas/vnfPkgInfo.schema.json index d8327b45..bd6edd29 100644 --- a/interconnectedTestCases/SOL003/schemas/vnfPkgInfo.schema.json +++ b/interconnectedTestCases/SOL003/schemas/vnfPkgInfo.schema.json @@ -63,7 +63,7 @@ "description": "Information about VNF package artifacts that are software images. This attribute shall not be present before the VNF package content is on-boarded. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n", "type": "array", "items": { - "description": "This type represents an artifact contained in or external to a VNF package which represents a software image..\n* NOTE 1:\tThe list of permitted values was taken from \"Container formats\" in OpenStack® documentation: \"Disk and container formats for images\"\n (Available at https://docs.openstack.org/glance/pike/user/formats.html).\n* NOTE 2:\tThe list of permitted values was adapted from \"Disk formats\" in OpenStack® documentation: \"Disk and container formats for images\"\n (Available at https://docs.openstack.org/glance/pike/user/formats.html).\n* NOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu, and shall be absent\n otherwise.\n* NOTE 4: The attribute shall be present for software images referenced from a VirtualStorageDesc, and shall be absent\n otherwise.\n", + "description": "This type represents an artifact contained in or external to a VNF package which represents a software image..\n* NOTE 1:\tThe list of permitted values was taken from \"Container formats\" in OpenStack┬« documentation: \"Disk and container formats for images\"\n (Available at https://docs.openstack.org/glance/pike/user/formats.html).\n* NOTE 2:\tThe list of permitted values was adapted from \"Disk formats\" in OpenStack┬« documentation: \"Disk and container formats for images\"\n (Available at https://docs.openstack.org/glance/pike/user/formats.html).\n* NOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu, and shall be absent\n otherwise.\n* NOTE 4: The attribute shall be present for software images referenced from a VirtualStorageDesc, and shall be absent\n otherwise.\n", "type": "object", "required": [ "id", @@ -104,7 +104,15 @@ "containerFormat": { "description": "Container format indicates whether the software image is in a file format that also contains metadata about the actual software. Permitted values: - AKI: a kernel image format - AMI: a machine image format - ARI: a ramdisk image format - BARE: the image does not have a container or metadata envelope - DOCKER: docker container format - OVA: OVF package in a tarfile - OVF: OVF container format See note 1.\n", "type": "string", - "enum": ["AKI", "AMI", "ARI", "BARE", "DOCKER", "OVA", "OVF"] + "enum": [ + "AKI", + "AMI", + "ARI", + "BARE", + "DOCKER", + "OVA", + "OVF" + ] }, "diskFormat": { "description": "Disk format of a software image is the format of the underlying disk image. Permitted values:\n - AKI: a kernel image format\n - AMI: a machine image format\n - ARI: a ramdisk image format\n - ISO: an archive format for the data contents of an optical disc,\n such as CD-ROM\n - QCOW2: a common disk image format, which can expand dynamically\n and supports copy on write\n - RAW: an unstructured disk image format\n - VDI: a common disk image format\n - VHD: a common disk image format\n - VHDX: enhanced version of VHD format\n - VMDK: a common disk image format\nSee notes 2 and 3.\n", @@ -157,7 +165,7 @@ "description": "Information about VNF package artifacts contained in the VNF package that are not software images. Every local and external artifact declared in the manifest shall be included, except the software images and the files that make up the parts of the VNFD (see clause 10.4.4.3.2). Signature files and certificate files are not considered as artifacts, however, the content of the \"Licenses\" and \"Testing\" directories in the VNF package is. This attribute shall not be present before the VNF package content is on-boarded. Otherwise, this attribute shall be present if the VNF package contains additional artifacts.\n", "type": "array", "items": { - "description": "This type represents an artifact other than a software image which is contained in or external to a VNF package.\n", + "description": "This type represents an artifact other than a software image which is contained in or external to a VNF package.\n* NOTE: The attribute name \"artifactURI\" does not comply with the naming convention defined in clause 4.3 in ETSI GS NFV-SOL 015. This is to maintain the backward compatibility.\n", "type": "object", "required": ["artifactPath", "checksum", "isEncrypted"], "properties": { @@ -166,7 +174,7 @@ "type": "string" }, "artifactURI": { - "description": "URI of the artifact as defined in the VNF package manifest. Shall be present if the artifact is external to the package and shall be absent otherwise.\nEXAMPLE: https://example.com/m%40ster.sh\n", + "description": "URI of the artifact as defined in the VNF package manifest. Shall be present if the artifact is external to the package and shall be absent otherwise. EXAMPLE:https://example.com/m%40ster.sh See note.\n", "type": "array", "items": { "description": "String formatted according to IETF RFC 3986.\n", @@ -200,7 +208,13 @@ "onboardingState": { "description": "CREATED: The \"Individual VNF package\" resource has been created. UPLOADING: The associated VNF package content is being uploaded. PROCESSING: The associated VNF package content is being processed, e.g.,\n validation.\nONBOARDED: The associated VNF package content has been on-boarded successfully. ERROR: There was an error during upload of the VNF package content or external\n artifacts, or during VNF package processing.\n", "type": "string", - "enum": ["CREATED", "UPLOADING", "PROCESSING", "ONBOARDED", "ERROR"] + "enum": [ + "CREATED", + "UPLOADING", + "PROCESSING", + "ONBOARDED", + "ERROR" + ] }, "operationalState": { "description": "- ENABLED: The VNF package is enabled, i.e. it can be used for\n the creation of new \"Individual VNF instance\" resources.\n- DISABLED: The VNF package is disabled, i.e. it shall not be used for\n the creation of further \"Individual VNF instance\" resources\n (unless and until the VNF package is re-enabled).\n", @@ -290,4 +304,4 @@ } } } -} +} \ No newline at end of file -- GitLab From a9b26ea1bce24ffa3bf6a6fbe9de05c84c5eca21 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 21 Nov 2024 12:15:40 +0500 Subject: [PATCH 006/141] add check if operation resource state is in failed temp then perfrom retry operation --- interconnectedTestCases/SOL003/IC_TC_Keywords.robot | 10 ++++++++++ .../SOL003/VNFLCORetryingFailedTemp.robot | 1 + 2 files changed, 11 insertions(+) diff --git a/interconnectedTestCases/SOL003/IC_TC_Keywords.robot b/interconnectedTestCases/SOL003/IC_TC_Keywords.robot index e12a4027..a08ee8a1 100644 --- a/interconnectedTestCases/SOL003/IC_TC_Keywords.robot +++ b/interconnectedTestCases/SOL003/IC_TC_Keywords.robot @@ -849,6 +849,16 @@ Get Vnf Scale Info ${scaleInfo}= Get Value From Json ${vnfInstance} $..scaleStatus [Return] ${scaleInfo} +Check operation resource state is FAILED_TEMP + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${VNFM_API_ROOT}/${VNFM_API_NAME}/${VNFM_API_MAJOR_VERSION}/vnf_lcm_op_occs/${globalVnfLcmOpOccId} + ${outputResponse}= Output response + ${state}= Set Variable ${outputResponse['body']['instantiationState']} + Log Current operation state: ${state} + Run Keyword If "${state}" != "FAILED_TEMP" + ... Pass Execution If True Skipping test: Operation state must be FAILED_TEMP but found ${state} + Log Operation resource state is FAILED_TEMP as expected + Post Retry operation Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} diff --git a/interconnectedTestCases/SOL003/VNFLCORetryingFailedTemp.robot b/interconnectedTestCases/SOL003/VNFLCORetryingFailedTemp.robot index 4b5eeb6d..28294bb3 100644 --- a/interconnectedTestCases/SOL003/VNFLCORetryingFailedTemp.robot +++ b/interconnectedTestCases/SOL003/VNFLCORetryingFailedTemp.robot @@ -19,4 +19,5 @@ Test that POST method initiates retrying a VNF lifecycle operation if the operat POST Create a new vnfInstance VNF Instantiation GET status information about multiple VNF LCM Operation OCC + Check operation resource state is FAILED_TEMP Post Retry operation task \ No newline at end of file -- GitLab From 4f812af8ee388045d21e071ebe8854099ad18175 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Mon, 25 Nov 2024 12:18:53 +0500 Subject: [PATCH 007/141] update requirements.txt --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 7df57b4f..2c07a8c9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,3 +10,4 @@ robotframework-jsonschemalibrary==1.0 robotframework-mockserver==0.0.7 robotframework-requests==0.7.1 PyJWT==2.9.0 +setuptools==75.5.0 \ No newline at end of file -- GitLab From 66cd1f8171dfa172b4d67bc8633fcfc90a0fea5d Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 15:17:20 +0100 Subject: [PATCH 008/141] added interconnected test case for VNF Instance Heal 11.3.1.11.1 --- .../SOL003/IC_TC_Keywords.robot | 27 +++++++++++++++++++ .../SOL003/VNFInstanceHeal.robot | 21 +++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 interconnectedTestCases/SOL003/VNFInstanceHeal.robot diff --git a/interconnectedTestCases/SOL003/IC_TC_Keywords.robot b/interconnectedTestCases/SOL003/IC_TC_Keywords.robot index a08ee8a1..de5ac3cc 100644 --- a/interconnectedTestCases/SOL003/IC_TC_Keywords.robot +++ b/interconnectedTestCases/SOL003/IC_TC_Keywords.robot @@ -301,6 +301,33 @@ VNF Instance Scale In Check Operation Notification For Scale COMPLETED Check Postcondition VNF SCALE_IN +VNF Instance Heal + Send Heal VNF Request + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Operation Occurrence Id existence + Check Operation Notification For Heal STARTING + Check Operation Notification For Heal PROCESSING + Check Operation Notification For Heal COMPLETED + Check Postcondition VNF Heal + +Send Heal VNF Request + Log Trying to heal a VNF instance. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get File jsons/healVnfRequest.json + Post ${NFVO}/${NFVO_API_ROOT}/${NFVO_API_NAME}/${NFVO_API_MAJOR_VERSION}/vnf_instances/${vnfid}/heal ${body} + ${output}= Output response + Set Global Variable ${response} ${output} + +Check Operation Notification For Heal + [Arguments] ${status} + Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} + +Check Postcondition VNF Heal + Check resource Instantiated + GET Individual VNF Package [keyword] Log Trying to get a VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} diff --git a/interconnectedTestCases/SOL003/VNFInstanceHeal.robot b/interconnectedTestCases/SOL003/VNFInstanceHeal.robot new file mode 100644 index 00000000..3c8ad3f8 --- /dev/null +++ b/interconnectedTestCases/SOL003/VNFInstanceHeal.robot @@ -0,0 +1,21 @@ +*** Settings *** +Suite Setup Initialize System +Suite Teardown Terminate All Processes kill=true +Resource environment/variables.txt # Generic Parameters +Resource IC_TC_Keywords.robot +Library JSONLibrary + +*** Test Cases *** +Heal a VNF instance + [Documentation] Test ID: 11.3.1.11.1 + ... Test title: Heal a VNF instance + ... Test objective: The objective is to test the interconnected case of VNF instance resource creation, instantiation and heal + ... Pre-conditions: none + ... Reference: ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_NFVO, Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET Individual VNF Package + POST Create a new vnfInstance + VNF Instantiation + VNF Instance Heal -- GitLab From cde01d47bf9385d03a8ee407ad5a1656af9cd1ba Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 16:36:04 +0100 Subject: [PATCH 009/141] added interconnected test case for VNF Instance Heal 11.3.1.12.1 --- .../SOL003/IC_TC_Keywords.robot | 92 +++++++++++++------ .../SOL003/VNFInstanceChangeExtConn.robot | 21 +++++ .../SOL003/environment/variables.txt | 9 +- .../changeExtVnfConnectivityRequest.json | 65 +++++++++++++ .../SOL003/jsons/healVnfRequest.json | 4 + 5 files changed, 160 insertions(+), 31 deletions(-) create mode 100644 interconnectedTestCases/SOL003/VNFInstanceChangeExtConn.robot create mode 100644 interconnectedTestCases/SOL003/jsons/changeExtVnfConnectivityRequest.json create mode 100644 interconnectedTestCases/SOL003/jsons/healVnfRequest.json diff --git a/interconnectedTestCases/SOL003/IC_TC_Keywords.robot b/interconnectedTestCases/SOL003/IC_TC_Keywords.robot index de5ac3cc..315f0183 100644 --- a/interconnectedTestCases/SOL003/IC_TC_Keywords.robot +++ b/interconnectedTestCases/SOL003/IC_TC_Keywords.robot @@ -129,9 +129,9 @@ VNF Instantiation Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location Check Operation Occurrence Id existence - Check Operation Notification For Instantiation STARTING - Check Operation Notification For Instantiation PROCESSING - Check Operation Notification For Instantiation COMPLETED + Check Operation Notification For STARTING + Check Operation Notification For PROCESSING + Check Operation Notification For COMPLETED Check Postcondition VNF Status INSTANTIATED POST Terminate a vnfInstance @@ -161,9 +161,9 @@ Terminate a VNF Instance Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location Check Operation Occurrence Id existence - Check Operation Notification For Terminate STARTING - Check Operation Notification For Terminate PROCESSING - Check Operation Notification For Terminate COMPLETED + Check Operation Notification For STARTING + Check Operation Notification For PROCESSING + Check Operation Notification For COMPLETED Check Postcondition VNF Terminate GET status information about multiple VNF LCM Operation OCC @@ -258,9 +258,9 @@ VNF Instance Scale Out Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location Check Operation Occurrence Id existence - Check Operation Notification For Scale STARTING - Check Operation Notification For Scale PROCESSING - Check Operation Notification For Scale COMPLETED + Check Operation Notification For STARTING + Check Operation Notification For PROCESSING + Check Operation Notification For COMPLETED Check Postcondition VNF SCALE_OUT Post Retry operation task @@ -296,9 +296,9 @@ VNF Instance Scale In Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location Check Operation Occurrence Id existence - Check Operation Notification For Scale STARTING - Check Operation Notification For Scale PROCESSING - Check Operation Notification For Scale COMPLETED + Check Operation Notification For STARTING + Check Operation Notification For PROCESSING + Check Operation Notification For COMPLETED Check Postcondition VNF SCALE_IN VNF Instance Heal @@ -306,9 +306,9 @@ VNF Instance Heal Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location Check Operation Occurrence Id existence - Check Operation Notification For Heal STARTING - Check Operation Notification For Heal PROCESSING - Check Operation Notification For Heal COMPLETED + Check Operation Notification For STARTING + Check Operation Notification For PROCESSING + Check Operation Notification For COMPLETED Check Postcondition VNF Heal Send Heal VNF Request @@ -317,17 +317,56 @@ Send Heal VNF Request Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/healVnfRequest.json - Post ${NFVO}/${NFVO_API_ROOT}/${NFVO_API_NAME}/${NFVO_API_MAJOR_VERSION}/vnf_instances/${vnfid}/heal ${body} + Post ${VNFM}/${VNFM_API_ROOT}/${VNFM_API_NAME}/${VNFM_API_MAJOR_VERSION}/vnf_instances/${vnfid}/heal ${body} ${output}= Output response Set Global Variable ${response} ${output} -Check Operation Notification For Heal - [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} - Check Postcondition VNF Heal Check resource Instantiated +VNF Change External Connectivity + Send Change Ext Connectivity Request + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Operation Occurrence Id existence + Check Operation Notification For STARTING + Check Operation Notification For PROCESSING + Check Operation Notification For COMPLETED + Check Postcondition VNF Change Ext Connectivity + +Send Change Ext Connectivity Request + Log Trying to change the external connectivity of a VNF instance. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get File jsons/changeExtVnfConnectivityRequest.json + Post ${VNFM}/${VNFM_API_ROOT}/${VNFM_API_NAME}/${VNFM_API_MAJOR_VERSION}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} + ${output}= Output response + Set Global Variable ${response} ${output} + +Get Vnf Ext Link Id + [Arguments] ${vnfInstanceId} + ${vnfInstance}= Get Vnf Instance ${vnfInstanceId} + [Return] ${vnfInstance.instantiatedVnfInfo.extVirtualLinkInfo.id} + +Get Vnf Instance + [Arguments] ${vnfInstanceId} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${VNFM}/${VNFM_API_ROOT}/${VNFM_API_NAME}/${VNFM_API_MAJOR_VERSION}/vnf_instances/${vnfInstanceId} + ${body}= Output response body + [Return] ${body} + +Check Postcondition VNF Change Ext Connectivity + Check resource instantiated + ${extVLId}= Get Vnf Ext Link Id ${vnfid} + Should be Equal ${changeVnfExtConnectivityRequest["extVirtualLinks"][0]["id"]} ${extVLId} + +Check Operation Notification For Change Ext Connectivity + [Arguments] ${status} + Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} + GET Individual VNF Package [keyword] Log Trying to get a VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} @@ -669,6 +708,7 @@ Configure Notification Forward Check Operation Notification [Arguments] ${element} ${status}="" + Log Checking Operation Notification ${element} ${status} ${json}= Get File schemas/${element}.schema.json ${req1}= Configure Notification Forward ${element} ${callback_endpoint} ${callback_endpoint_fwd} ${req2}= Configure Notification Status Handler ${callback_endpoint_fwd} ${status} @@ -685,9 +725,9 @@ Check VNF Instance Operation Notification Clear Requests ${callback_endpoint} Clear Requests ${callback_endpoint_fwd} -Check Operation Notification For Instantiation +Check Operation Notification For [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} + Run Keyword If ${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'COMPLETED') Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} Check Postcondition VNF Status [Arguments] ${status} @@ -724,10 +764,6 @@ Send Terminate VNF Request ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -Check Operation Notification For Terminate - [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} - Check Postcondition VNF Terminate Check resource not Instantiated @@ -860,10 +896,6 @@ Compare ScaleInfos END Run Keyword If ${type}==SCALE_OUT Should Be True ${old_level_value}<${new_level_value} ... ELSE Should Be True ${old_level_value}<${new_level_value} - -Check Operation Notification For Scale - [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} Check resource Instantiated Check VNF Instance ${vnfid} diff --git a/interconnectedTestCases/SOL003/VNFInstanceChangeExtConn.robot b/interconnectedTestCases/SOL003/VNFInstanceChangeExtConn.robot new file mode 100644 index 00000000..0bdfcab3 --- /dev/null +++ b/interconnectedTestCases/SOL003/VNFInstanceChangeExtConn.robot @@ -0,0 +1,21 @@ +*** Settings *** +Suite Setup Initialize System +Suite Teardown Terminate All Processes kill=true +Resource environment/variables.txt # Generic Parameters +Resource IC_TC_Keywords.robot +Library JSONLibrary + +*** Test Cases *** +VNF instance Change External Connectivity + [Documentation] Test ID: 11.3.1.12.1 + ... Test title: VNF instance Change External Connectivity + ... Test objective: The objective is to test the interconnected case of VNF instance resource creation, instantiation and change external connectivity + ... Pre-conditions: none + ... Reference: ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_NFVO, Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET Individual VNF Package + POST Create a new vnfInstance + VNF Instantiation + VNF Change External Connectivity \ No newline at end of file diff --git a/interconnectedTestCases/SOL003/environment/variables.txt b/interconnectedTestCases/SOL003/environment/variables.txt index 2b71e62d..f5c7d466 100644 --- a/interconnectedTestCases/SOL003/environment/variables.txt +++ b/interconnectedTestCases/SOL003/environment/variables.txt @@ -9,13 +9,20 @@ ${VNFM_PORT} 3001 # Listening port of the VNFM ${VNFM_SCHEMA} http ${VNFM} ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} +################################################################################################ +##### THIS VARIABLE BELOW ALLOWS TO SKIP INTERMEDIATE LIFEFYCLE OP OCC INTERMEDIATE CHECKS ##### +##### IT IS INTENDED TO BE A KNOWN DEVIATION FROM STANDARDS ##### + +${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} 1 + +################################################################################################ ${ACCEPT} application/json ${ACCEPT_JSON} application/json ${CONTENT_TYPE} application/json ${AUTHORIZATION_HEADER} Authorization ${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 -${AUTH_USAGE} 1 +${AUTH_USAGE} 0 ${CONTENT_TYPE_PATCH} application/merge-patch+json ${NFVO_API_ROOT} diff --git a/interconnectedTestCases/SOL003/jsons/changeExtVnfConnectivityRequest.json b/interconnectedTestCases/SOL003/jsons/changeExtVnfConnectivityRequest.json new file mode 100644 index 00000000..aee8e90f --- /dev/null +++ b/interconnectedTestCases/SOL003/jsons/changeExtVnfConnectivityRequest.json @@ -0,0 +1,65 @@ +{{ + "extVirtualLinks": [ + { + "id": "string", + "vimConnectionId": "string", + "resourceProviderId": "string", + "resourceId": "string", + "extCps": [ + { + "cpdId": "string", + "cpConfig": [ + { + "cpInstanceId": "string", + "linkPortId": "string", + "cpProtocolData": [ + { + "layerProtocol": "IP_OVER_ETHERNET", + "ipOverEthernet": { + "macAddress": "string", + "ipAddresses": [ + { + "type": "IPV4", + "fixedAddresses": [ + "string" + ], + "numDynamicAddresses": 0, + "addressRange": { + "minAddress": "string", + "maxAddress": "string" + }, + "subnetId": "string" + } + ] + } + } + ] + } + ] + } + ], + "extLinkPorts": [ + { + "id": "string", + "resourceHandle": { + "vimConnectionId": "string", + "resourceProviderId": "string", + "resourceId": "string", + "vimLevelResourceType": "string" + } + } + ] + } + ], + "vimConnectionInfo": [ + { + "id": "string", + "vimId": "string", + "vimType": "string", + "interfaceInfo": {}, + "accessInfo": {}, + "extra": {} + } + ], + "additionalParams": {} +}} \ No newline at end of file diff --git a/interconnectedTestCases/SOL003/jsons/healVnfRequest.json b/interconnectedTestCases/SOL003/jsons/healVnfRequest.json new file mode 100644 index 00000000..640cd60d --- /dev/null +++ b/interconnectedTestCases/SOL003/jsons/healVnfRequest.json @@ -0,0 +1,4 @@ +{{ + "cause": "{healingCause}", + "additionalParams": {{}} +}} \ No newline at end of file -- GitLab From c1acc0659cc868e9fe3e0d97125d156c0a9d56de Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 18:41:30 +0100 Subject: [PATCH 010/141] updated reference vnf descriptor --- .../SOL003/descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interconnectedTestCases/SOL003/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/interconnectedTestCases/SOL003/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index 2ca16800..3288c19b 100644 --- a/interconnectedTestCases/SOL003/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/interconnectedTestCases/SOL003/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -2,7 +2,7 @@ tosca_definitions_version: tosca_simple_yaml_1_3 description: "TST010 reference VNF-B" imports: - - https://forge.etsi.org/rep/nfv/SOL001/raw/v4.4.1/etsi_nfv_sol001_vnfd_types.yaml + - https://forge.etsi.org/rep/nfv/SOL001/raw/v5.1.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:v4.5.1' ] + default: [ 'etsivnfm:v5.1.1' ] interfaces: Vnflcm: type: "tosca.interfaces.nfv.Vnflcm" @@ -153,7 +153,7 @@ topology_template: flavour_id: "VNF-B_flavor" flavour_description: "VNF-B flavor" vnfm_info: - - etsivnfm:v2.3.1 + - etsivnfm:v5.1.1 interfaces: Vnflcm: type: "tosca.interfaces.nfv.Vnflcm" -- GitLab From 972c0a032dbb95bf4ac4ad85f059aa77ff33b70c Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Mon, 20 Jan 2025 12:09:05 +0100 Subject: [PATCH 011/141] updated interconnected test cases 11.3.1.11 and 11.3.1.12 to add missing GET VNF instance step --- .../SOL003/IC_TC_Keywords.robot | 4 +- .../SOL003/VNFInstanceChangeExtConn.robot | 1 + .../SOL003/VNFInstanceHeal.robot | 1 + interconnectedTestCases/SOL003/log.html | 2196 +++++++++++++++ interconnectedTestCases/SOL003/output.xml | 62 + interconnectedTestCases/SOL003/report.html | 2462 +++++++++++++++++ 6 files changed, 4724 insertions(+), 2 deletions(-) create mode 100644 interconnectedTestCases/SOL003/log.html create mode 100644 interconnectedTestCases/SOL003/output.xml create mode 100644 interconnectedTestCases/SOL003/report.html diff --git a/interconnectedTestCases/SOL003/IC_TC_Keywords.robot b/interconnectedTestCases/SOL003/IC_TC_Keywords.robot index 315f0183..f5d446e0 100644 --- a/interconnectedTestCases/SOL003/IC_TC_Keywords.robot +++ b/interconnectedTestCases/SOL003/IC_TC_Keywords.robot @@ -735,9 +735,9 @@ Check Postcondition VNF Status Check VNF Instance ${vnfid} Should Not Be Empty ${response} Check HTTP Response Status Code Is 200 - Should Be Equal ${response['body']['id']} ${vnfInstanceId} + Should Be Equal ${response['body']['id']} ${vnfid} Check HTTP Response Header Contains Content-Type - Check HTTP Response Body Json Schema Is vnfInstance.schema.json + Check HTTP Response Body Json Schema Is schemas/vnfInstance.schema.json Check VNF Status ${response['body']['instantiationState']} ${status} Check VNF Instance diff --git a/interconnectedTestCases/SOL003/VNFInstanceChangeExtConn.robot b/interconnectedTestCases/SOL003/VNFInstanceChangeExtConn.robot index 0bdfcab3..a71426f5 100644 --- a/interconnectedTestCases/SOL003/VNFInstanceChangeExtConn.robot +++ b/interconnectedTestCases/SOL003/VNFInstanceChangeExtConn.robot @@ -18,4 +18,5 @@ VNF instance Change External Connectivity GET Individual VNF Package POST Create a new vnfInstance VNF Instantiation + Get Information about an individual VNF Instance VNF Change External Connectivity \ No newline at end of file diff --git a/interconnectedTestCases/SOL003/VNFInstanceHeal.robot b/interconnectedTestCases/SOL003/VNFInstanceHeal.robot index 3c8ad3f8..a9defc73 100644 --- a/interconnectedTestCases/SOL003/VNFInstanceHeal.robot +++ b/interconnectedTestCases/SOL003/VNFInstanceHeal.robot @@ -18,4 +18,5 @@ Heal a VNF instance GET Individual VNF Package POST Create a new vnfInstance VNF Instantiation + Get Information about an individual VNF Instance VNF Instance Heal diff --git a/interconnectedTestCases/SOL003/log.html b/interconnectedTestCases/SOL003/log.html new file mode 100644 index 00000000..0267009b --- /dev/null +++ b/interconnectedTestCases/SOL003/log.html @@ -0,0 +1,2196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework log failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/interconnectedTestCases/SOL003/output.xml b/interconnectedTestCases/SOL003/output.xml new file mode 100644 index 00000000..5a79ac89 --- /dev/null +++ b/interconnectedTestCases/SOL003/output.xml @@ -0,0 +1,62 @@ + + + + + +STARTING + +Test run keyword +Logs the given message with the given level. +Test run keyword + + + +${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'COMPLETED') +Operation Test +Runs the given keyword with the given arguments, if ``condition`` is true. + + + + + +COMPLETED + +Test run keyword +Logs the given message with the given level. +Test run keyword + + + +${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'COMPLETED') +Operation Test +Runs the given keyword with the given arguments, if ``condition`` is true. + + +Executing Operation Tests +Logs the given message with the given level. +Executing Operation Tests + + + + + + + + + + + + + + +All Tests + + + + +Test + + + + + diff --git a/interconnectedTestCases/SOL003/report.html b/interconnectedTestCases/SOL003/report.html new file mode 100644 index 00000000..b08f13fd --- /dev/null +++ b/interconnectedTestCases/SOL003/report.html @@ -0,0 +1,2462 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework report failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- GitLab From 4227a8e54cc67963c0620f517a0c83891d4fe8dc Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Mon, 20 Jan 2025 12:09:50 +0100 Subject: [PATCH 012/141] removed useless local files --- interconnectedTestCases/SOL003/log.html | 2196 ----------------- interconnectedTestCases/SOL003/output.xml | 62 - interconnectedTestCases/SOL003/report.html | 2462 -------------------- 3 files changed, 4720 deletions(-) delete mode 100644 interconnectedTestCases/SOL003/log.html delete mode 100644 interconnectedTestCases/SOL003/output.xml delete mode 100644 interconnectedTestCases/SOL003/report.html diff --git a/interconnectedTestCases/SOL003/log.html b/interconnectedTestCases/SOL003/log.html deleted file mode 100644 index 0267009b..00000000 --- a/interconnectedTestCases/SOL003/log.html +++ /dev/null @@ -1,2196 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Opening Robot Framework log failed

-
    -
  • Verify that you have JavaScript enabled in your browser.
  • -
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • -
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • -
-
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/interconnectedTestCases/SOL003/output.xml b/interconnectedTestCases/SOL003/output.xml deleted file mode 100644 index 5a79ac89..00000000 --- a/interconnectedTestCases/SOL003/output.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -STARTING - -Test run keyword -Logs the given message with the given level. -Test run keyword - - - -${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'COMPLETED') -Operation Test -Runs the given keyword with the given arguments, if ``condition`` is true. - - - - - -COMPLETED - -Test run keyword -Logs the given message with the given level. -Test run keyword - - - -${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'COMPLETED') -Operation Test -Runs the given keyword with the given arguments, if ``condition`` is true. - - -Executing Operation Tests -Logs the given message with the given level. -Executing Operation Tests - - - - - - - - - - - - - - -All Tests - - - - -Test - - - - - diff --git a/interconnectedTestCases/SOL003/report.html b/interconnectedTestCases/SOL003/report.html deleted file mode 100644 index b08f13fd..00000000 --- a/interconnectedTestCases/SOL003/report.html +++ /dev/null @@ -1,2462 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Opening Robot Framework report failed

-
    -
  • Verify that you have JavaScript enabled in your browser.
  • -
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • -
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • -
-
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- GitLab From 673a01e3a54230fc08e297322234c85e667dacdd Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 22 Jan 2025 17:45:57 +0500 Subject: [PATCH 013/141] remove mojibake special characters from response bodies --- .../SOL003/schemas/Subscription.schema.json | 2 +- .../SOL003/schemas/VnfLcmOpOccs.schema.json | 10 +++++----- .../SOL003/schemas/vnfInstance.schema.json | 12 ++++++------ .../SOL003/schemas/vnfInstances.schema.json | 14 +++++++------- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/interconnectedTestCases/SOL003/schemas/Subscription.schema.json b/interconnectedTestCases/SOL003/schemas/Subscription.schema.json index 4dfbe696..ab95aa1e 100644 --- a/interconnectedTestCases/SOL003/schemas/Subscription.schema.json +++ b/interconnectedTestCases/SOL003/schemas/Subscription.schema.json @@ -128,7 +128,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", diff --git a/interconnectedTestCases/SOL003/schemas/VnfLcmOpOccs.schema.json b/interconnectedTestCases/SOL003/schemas/VnfLcmOpOccs.schema.json index a56c2339..0a95eb43 100644 --- a/interconnectedTestCases/SOL003/schemas/VnfLcmOpOccs.schema.json +++ b/interconnectedTestCases/SOL003/schemas/VnfLcmOpOccs.schema.json @@ -58,7 +58,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -765,7 +765,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": ["linkPortId"] @@ -792,7 +792,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1193,7 +1193,7 @@ "format": "date-time" }, "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: ΓÇó\tMGMT: coordination with other operation supporting management systems (e.g. EM) ΓÇó\tVNF: coordination with the VNF instance\n", + "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", "type": "string", "enum": [ "MGMT", @@ -1230,7 +1230,7 @@ "format": "date-time" }, "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: ΓÇó\tMGMT: coordination with other operation supporting management systems (e.g. EM) ΓÇó\tVNF: coordination with the VNF instance\n", + "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", "type": "string", "enum": [ "MGMT", diff --git a/interconnectedTestCases/SOL003/schemas/vnfInstance.schema.json b/interconnectedTestCases/SOL003/schemas/vnfInstance.schema.json index 1637e5ef..ec18b531 100644 --- a/interconnectedTestCases/SOL003/schemas/vnfInstance.schema.json +++ b/interconnectedTestCases/SOL003/schemas/vnfInstance.schema.json @@ -729,7 +729,7 @@ "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPorts\" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -939,7 +939,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfo\" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1586,7 +1586,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1619,7 +1619,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2438,7 +2438,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfo\" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2728,7 +2728,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kind\" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/interconnectedTestCases/SOL003/schemas/vnfInstances.schema.json b/interconnectedTestCases/SOL003/schemas/vnfInstances.schema.json index 13a3e3b3..e802aa46 100644 --- a/interconnectedTestCases/SOL003/schemas/vnfInstances.schema.json +++ b/interconnectedTestCases/SOL003/schemas/vnfInstances.schema.json @@ -1,7 +1,7 @@ { "type": "array", "items": { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatus\" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -731,7 +731,7 @@ "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPorts\" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -941,7 +941,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfo\" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1588,7 +1588,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1621,7 +1621,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2440,7 +2440,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfo\" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2730,7 +2730,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kind\" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", -- GitLab From 0fe983019fecb79e58a53aa0a4c8787e78eb8fb1 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 17:01:25 +0500 Subject: [PATCH 014/141] update SOL 002 version in test cases description from 4.5.1 to 5.1.1 --- .../CancelCoordinationActionTask.robot | 18 +++++++------- .../Coordinations.robot | 24 +++++++++---------- .../IndividualCoordinationAction.robot | 18 +++++++------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/SOL002/VNFLCMCoordination-API/CancelCoordinationActionTask.robot b/SOL002/VNFLCMCoordination-API/CancelCoordinationActionTask.robot index 1c316493..d80096e4 100644 --- a/SOL002/VNFLCMCoordination-API/CancelCoordinationActionTask.robot +++ b/SOL002/VNFLCMCoordination-API/CancelCoordinationActionTask.robot @@ -15,7 +15,7 @@ POST Cancellation of an Ongoing Individual Coordination Action ... Test title: POST Cancellation of an Ongoing Individual Coordination Action ... Test Objective: The objective is to test that POST request for cancellation of an ongoing individual coordination Action has accepted for processing. ... pre-condition: The status of the related LCM operation occurance is "PROCESSING" - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When there is an Ongoing individual LCM operation coordination action. ... Post-Condition: none @@ -28,7 +28,7 @@ POST Cancellation of an Ongoing Individual Coordination Action - Conflict ... Test title: POST Cancellation of an Ongoing Individual Coordination Action - Conflict ... Test Objective: The objective is to test that POST request for cancellation of an ongoing individual coordination Action is not successfull due to a conflict with the state of the "Individual coordination action" resource. ... pre-condition: none - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: Processing of Individual Coordination Action has 'Finished'. ... Post-Condition: none @@ -41,7 +41,7 @@ Request a cancellation of an ongoing coordination action without authentication ... Test title: Request a cancellation of an ongoing coordination action without authentication ... Test objective: The objective is to test the failure of the request for a cancellation of a coordination task when no authentication is used ... Pre-conditions: none - ... Reference: Clause Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Cancellation of an Ongoing Individual Coordination Action - Method not Imple ... Test title: GET Cancellation of an Ongoing Individual Coordination Action ... Test Objective: The objective is to test that GET method for cancellation of an ongoing individual coordination Action is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: ongoing individual coordination ... Post-Condition: none @@ -65,7 +65,7 @@ PUT Cancellation of an Ongoing Individual Coordination Action - Method not Imple ... Test title: PUT Cancellation of an Ongoing Individual Coordination Action ... Test Objective: The objective is to test that PUT method for cancellation of an ongoing individual coordination Action is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -77,7 +77,7 @@ PATCH Cancellation of an Ongoing Individual Coordination Action - Method not Imp ... Test title: PATCH Cancellation of an Ongoing Individual Coordination Action ... Test Objective: The objective is to test that PATCH method for cancellation of an ongoing individual coordination Action is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -89,7 +89,7 @@ DELETE Cancellation of an Ongoing Individual Coordination Action - Method not Im ... Test title: DELETE Cancellation of an Ongoing Individual Coordination Action ... Test Objective: The objective is to test that DELETE method for cancellation of an ongoing individual coordination Action is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -100,7 +100,7 @@ POST Cancellation of an Ongoing Individual Coordination Action with permitted au ... Test title: POST Cancellation of an Ongoing Individual Coordination Action with permitted authorization scope ... Test Objective: The objective is to test that POST request for cancellation of an ongoing individual coordination Action has accepted for processing with permitted authorization scope. ... pre-condition: The status of the related LCM operation occurance is "PROCESSING" - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When there is an Ongoing individual LCM operation coordination action. ... Post-Condition: none @@ -112,7 +112,7 @@ POST Cancellation of an Ongoing Individual Coordination Action with not permitte ... Test title: POST Cancellation of an Ongoing Individual Coordination Action with not permitted authorization scope ... Test Objective: The objective is to test that POST request for cancellation of an ongoing individual coordination Action has accepted for processing with not permitted authorization scope. ... pre-condition: The status of the related LCM operation occurance is "PROCESSING" - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When there is an Ongoing individual LCM operation coordination action. ... Post-Condition: none diff --git a/SOL002/VNFLCMCoordination-API/Coordinations.robot b/SOL002/VNFLCMCoordination-API/Coordinations.robot index b0e266aa..2e74d439 100644 --- a/SOL002/VNFLCMCoordination-API/Coordinations.robot +++ b/SOL002/VNFLCMCoordination-API/Coordinations.robot @@ -15,7 +15,7 @@ POST Coordination of LCM Operation Occurance and API Producer has Chosen the Syn ... Test title: Post Coordination of an LCM operation occurrence ... Test Objective: The objective is to test the creation of new Individual Coordination Action, and perform a JSON schema validation of the returned LCM coordination data structure. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: API producer has chosen the synchronous mode ... Post-Condition: none @@ -30,7 +30,7 @@ POST Coordination of LCM Operation Occurance and API Producer has Chosen the Asy ... Test title: Post Coordination of an LCM operation occurrence ... Test Objective: The objective is to test that the coordination of a LCM operation occurance request has been accepted for processing, and perform a JSON schema validation of the returned LCM coordination data structure. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: API producer has chosen the asynchronous mode ... Post-Condition: none @@ -44,7 +44,7 @@ POST Coordination of a LCM Operation Occurance Forbidden ... Test title: Post Coordination of an LCM operation occurrence Forbidden ... Test Objective: The objective is to test the failure of a request for the coordination of an LCM operation occurrence ... pre-condition: The status of the related LCM opeation occurrence is "PROCESSING". The request is performed by a user that has not the grant to run this operation - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -57,7 +57,7 @@ POST Coordination of LCM Operation Occurance Conflict ... Test title: Post Coordination of an LCM operation occurrence Conflict ... Test Objective: The objective is to verify that no coordination actions can be executed currently, due to a conflict with the state of the "Coordinations" resource. ... pre-condition: The status of the related LCM opeation occurrence is not "PROCESSING" - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When there are many coordination actions exist, or conflicting ones, are in progress. ... Post-Condition: none @@ -70,7 +70,7 @@ POST Coordination of LCM Operation Occurance Service Unavailable ... Test title: Post Coordination of an LCM operation occurrence Service Unavailable ... Test Objective: The objective is to test the request for the coordination of an LCM operation occurrence and the verify that the NFVO cannot perform immediately the request, but can perform it sometime in the future. ... pre-condition: The status of the related LCM opeation occurrence is "PROCESSING" but API producer cannot perform immediately the request - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: API producer has chosen the synchronous mode ... Post-Condition: none @@ -84,7 +84,7 @@ POST Coordination of an LCM operation occurrence without authentication ... Test title: Request a Coordination of an LCM operation occurrence without authentication ... Test objective: The objective is to test the failure of the request for the coordination of an LCM operation occurrence without providing an authentication token ... Pre-conditions: The status of the related LCM opeation occurrence is "PROCESSING" - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -96,7 +96,7 @@ GET Coordination of a LCM Operation Occurance - Method not implemented ... Test title: GET Coordination of a LCM Operation Occurance - Method not implemented ... Test Objective: The objective is to test that GET method for Resource Coordinations is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -108,7 +108,7 @@ PUT Coordination of a LCM Operation Occurance - Method not implemented ... Test title: PUT Coordination of a LCM Operation Occurance - Method not implemented ... Test Objective: The objective is to test that PUT method for Resource Coordinations is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -120,7 +120,7 @@ PACTH Coordination of a LCM Operation Occurance - Method not implemented ... Test title: PATCH Coordination of a LCM Operation Occurance - Method not implemented ... Test Objective: The objective is to test that PATCH method for Resource Coordinations is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -132,7 +132,7 @@ DELETE Coordination of a LCM Operation Occurance - Method not implemented ... Test title: DELETE Coordination of a LCM Operation Occurance - Method not implemented ... Test Objective: The objective is to test that DELETE method for Resource Coordinations is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -143,7 +143,7 @@ POST Coordination of LCM Operation Occurance and API Producer has Chosen the Syn ... Test title: Post Coordination of an LCM operation occurrence with permitted authorization scope ... Test Objective: The objective is to test the creation of new Individual Coordination Action, and perform a JSON schema validation of the returned LCM coordination data structure with permitted authorization scope. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: API producer has chosen the synchronous mode ... Post-Condition: none @@ -157,7 +157,7 @@ POST Coordination of LCM Operation Occurance and API Producer has Chosen the Syn ... Test title: Post Coordination of an LCM operation occurrence with not permitted authorization scope ... Test Objective: The objective is to test the creation of new Individual Coordination Action, and perform a JSON schema validation of the returned LCM coordination data structure with not permitted authorization scope. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: API producer has chosen the synchronous mode ... Post-Condition: none diff --git a/SOL002/VNFLCMCoordination-API/IndividualCoordinationAction.robot b/SOL002/VNFLCMCoordination-API/IndividualCoordinationAction.robot index 72fe924d..e6945fff 100644 --- a/SOL002/VNFLCMCoordination-API/IndividualCoordinationAction.robot +++ b/SOL002/VNFLCMCoordination-API/IndividualCoordinationAction.robot @@ -14,7 +14,7 @@ POST Individual LCM Operation Coordination Results - Method not implemented ... Test title: POST Individual LCM Operation Coordination Results - Method not implemented ... Test Objective: The objective is to test that POST method for individual LCM operation coordination results is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -26,7 +26,7 @@ GET Individual LCM Operation Coordination Results - Coordination is Finished ... Test title: GET Individual LCM Operation Coordination Results ... Test Objective: The objective is to test that coordination is finished and GET method reads individual LCM operation coordination results successfully, and perform a JSON schema validation of the returned LCM coordination data structure. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When the Individual LCM Operation Coordination is finished ... Post-Condition: none @@ -39,7 +39,7 @@ GET Individual LCM Operation Coordination Results - Coordination is Not Finished ... Test title: GET Individual LCM Operation Coordination Results ... Test Objective: The objective is to test that GET method checks that whether Individual LCM Operation Coordination is still ongoing or in the process of being cancelled. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When the Individual LCM Operation Coordination is still ongoing or in the process of being cancelled. ... Post-Condition: none @@ -52,7 +52,7 @@ Get Individual LCM Operation Coordination Results without authentication ... Test title: Get information about a finished coordination task without authentication ... Test objective: The objective is to try to read an individual coordination task without using authentication ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Individual LCM Operation Coordination Results - Method not implemented ... Test title: PUT Individual LCM Operation Coordination Results - Method not implemented ... Test Objective: The objective is to test that PUT method for individual LCM operation coordination results is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -76,7 +76,7 @@ PATCH Individual LCM Operation Coordination Results - Method not implemented ... Test title: PATCH Individual LCM Operation Coordination Results - Method not implemented ... Test Objective: The objective is to test that PATCH method for individual LCM operation coordination results is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -88,7 +88,7 @@ DELETE Individual LCM Operation Coordination Results - Method not implemented ... Test title: PUT Individual LCM Operation Coordination Results - Method not implemented ... Test Objective: The objective is to test that DELETE method for individual LCM operation coordination results is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -99,7 +99,7 @@ GET Individual LCM Operation Coordination Results - Coordination is Finished wit ... Test title: GET Individual LCM Operation Coordination Results - Coordination is Finished with permitted authorization scope ... Test Objective: The objective is to test that coordination is finished and GET method reads individual LCM operation coordination results successfully, and perform a JSON schema validation of the returned LCM coordination data structure with permitted authorization scope. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When the Individual LCM Operation Coordination is finished ... Post-Condition: none @@ -111,7 +111,7 @@ GET Individual LCM Operation Coordination Results - Coordination is Finished wit ... Test title: GET Individual LCM Operation Coordination Results - Coordination is Finished with not permitted authorization scope ... Test Objective: The objective is to test that coordination is finished and GET method reads individual LCM operation coordination results successfully, and perform a JSON schema validation of the returned LCM coordination data structure with not permitted authorization scope. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When the Individual LCM Operation Coordination is finished ... Post-Condition: none -- GitLab From bf927591478ad02fb7231f4941a965205c2e84b2 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 16:51:31 +0500 Subject: [PATCH 015/141] update SOL 002 version in test cases description from 4.5.1 to 5.1.1 --- .../IndividualSubscription.robot | 18 +++++------ .../IndividualVNFindicator.robot | 28 ++++++++--------- .../NotificationEndpoint.robot | 14 ++++----- SOL002/VNFIndicator-API/Notifications.robot | 4 +-- SOL002/VNFIndicator-API/Subscriptions.robot | 30 +++++++++---------- SOL002/VNFIndicator-API/VNFIndicators.robot | 30 +++++++++---------- .../VnfIndicatorsInVnfInstanceId.robot | 24 +++++++-------- 7 files changed, 74 insertions(+), 74 deletions(-) diff --git a/SOL002/VNFIndicator-API/IndividualSubscription.robot b/SOL002/VNFIndicator-API/IndividualSubscription.robot index 2f82d44e..7f67726c 100644 --- a/SOL002/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL002/VNFIndicator-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ GET Individual VNF Indicator Subscription ... Test title: Get individual subscription to VNF performance indicators ... Test objective: The objective is to test the retrieval of individual VNF performance indicator subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -24,7 +24,7 @@ GET Individual VNF Indicator Subscription with invalid resource identifier ... Test title: Get individual subscription to VNF performance indicators ... Test objective: The objective is to test that the retrieval of individual VNF performance indicator subscription fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -37,7 +37,7 @@ DELETE Individual VNF Indicator Subscription ... Test title: Delete individual subscription to VNF performance indicators ... Test objective: The objective is to test the deletion of an individual VNF performance indicator subscription. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: The subscription to VNF performance indicators is deleted @@ -50,7 +50,7 @@ DELETE Individual VNF Indicator Subscription with invalid resource identifier ... Test title: Delete individual subscription to VNF performance indicators ... Test objective: The objective is to test that the deletion of an individual VNF performance indicator subscription fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an individual VNF performance indicator subscription ... Pre-conditions: none - ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an individual VNF performance indicator subscription ... Pre-conditions: none - ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -87,7 +87,7 @@ POST Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an individual VNF performance indicator subscription ... Pre-conditions: none - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -98,7 +98,7 @@ GET Individual VNF Indicator Subscription with permitted authorization scope ... Test title: Get individual subscription to VNF performance indicators with permitted authorization scope ... Test objective: The objective is to test the retrieval of individual VNF performance indicator subscription and perform a JSON schema validation of the returned subscription data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -110,7 +110,7 @@ GET Individual VNF Indicator Subscription with NOT permitted authorization scope ... Test title: Get individual subscription to VNF performance indicators with NOT permitted authorization scope ... Test objective: The objective is to test the retrieval of individual VNF performance indicator subscription and perform a JSON schema validation of the returned subscription data structure with NOT permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot index 7bebc51f..dbcf58e6 100644 --- a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot @@ -10,7 +10,7 @@ Get Individual Indicator for VNF Instance ... Test title: Get individual performance indicator for a VNF instance ... Test objective: The objective is to test the retrieval of a performance indicator for a given VNF instance and perform a JSON schema validation of the returned indicator data structure ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -25,7 +25,7 @@ Get Individual Indicator for VNF Instance with invalid indicator identifier ... Test title: Get individual performance indicator for a VNF instance with invalid indicator identifier ... Test objective: The objective is to test that the retrieval of a performance indicator for a given VNF instance fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -38,7 +38,7 @@ POST Individual VNF Indicator - Method not implemented ... Test title: POST individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new performance indicator for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual VNF Indicator - Method not implemented ... Test title: PUT individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing performance indicator for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual VNF Indicator - Method not implemented ... Test title: PATCH individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an existing performance indicator for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual VNF Indicator - Method not implemented ... Test title: DELETE individual performance indicator indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing performance indicator for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -86,7 +86,7 @@ Get Individual Performance Indicator ... Test title: Get Individual Performance Indicator ... Test objective: The objective is to test the retrieval of a performance indicator and perform a JSON schema validation of the returned indicator data structure ... Pre-conditions: At least one measure of performance indicator is available.. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -100,7 +100,7 @@ Get Individual Performance Indicator with invalid indicator identifier ... Test title: Get Individual Performance Indicator with invalid indicator identifier ... Test objective: The objective is to test that the retrieval of a performance indicator fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: At least one measure of performance indicator is available. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -113,7 +113,7 @@ POST Individual Performance Indicator - Method not implemented ... Test title: POST Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new performance indicator. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -125,7 +125,7 @@ PUT Individual Performance Indicator - Method not implemented ... Test title: PUT Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing performance indicator. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -137,7 +137,7 @@ PATCH Individual Performance Indicator - Method not implemented ... Test title: PATCH Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an existing performance indicator. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -149,7 +149,7 @@ DELETE Individual Performance Indicator - Method not implemented ... Test title: DELETE Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing performance indicator. ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -160,7 +160,7 @@ Get Individual Indicator for VNF Instance with permitted authorization scope ... Test title: Get individual performance indicator for a VNF instance with permitted authorization scope ... Test objective: The objective is to test the retrieval of a performance indicator for a given VNF instance and perform a JSON schema validation of the returned indicator data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -174,7 +174,7 @@ Get Individual Indicator for VNF Instance with NOT permitted authorization scope ... Test title: Get individual performance indicator for a VNF instance with NOT permitted authorization scope ... Test objective: The objective is to test the retrieval of a performance indicator for a given VNF instance and perform a JSON schema validation of the returned indicator data structure with NOT permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/NotificationEndpoint.robot b/SOL002/VNFIndicator-API/NotificationEndpoint.robot index 6eb13de5..e3e228ce 100644 --- a/SOL002/VNFIndicator-API/NotificationEndpoint.robot +++ b/SOL002/VNFIndicator-API/NotificationEndpoint.robot @@ -12,7 +12,7 @@ VNF Indicator Value Change Notification ... Test title: VNF Indicator Value Change Notification ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification . ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNF. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Supported Indicators Change Notification ... Test title: Supported Indicators Change Notification ... Test objective: The objective is to test that the POST request triggers Supported Indicators Change Notification . ... Pre-conditions: A VNF is instantiated, and a subscription for supported indicators change notifications is available in the VNF. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ Test the Notification Endpoint - Successful ... Test title: Test the Notification Endpoint - Successful ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. - ... Reference: Clause 8.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ Test the Notification Endpoint - NOT FOUND ... Test title: Test the Notification Endpoint - UNREACHABLE ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. - ... Reference: Clause 8.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: The notification endpoint is unreachable by the API producer. ... Post-Conditions: none @@ -61,7 +61,7 @@ PUT Notification endpoint - Method Not Implemented ... Test title: PUT Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. - ... Reference: Clause 8.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ PATCH Notification endpoint - Method Not Implemented ... Test title: PATCH Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. - ... Reference: Clause 8.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ DELETE Notification endpoint - Method Not Implemented ... Test title: DELETE Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. - ... Reference: Clause 8.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/Notifications.robot b/SOL002/VNFIndicator-API/Notifications.robot index 337f4009..584225b9 100644 --- a/SOL002/VNFIndicator-API/Notifications.robot +++ b/SOL002/VNFIndicator-API/Notifications.robot @@ -16,7 +16,7 @@ VNF Indicator Value Change Notification ... Test title: VNF Indicator Value Change Notification ... Test objective: The objective is to test the dispatch of VNF Indicator Value Change Notification when new indicator values are available in the VNF, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNF. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNF ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Supported Indicators Change Notification ... Test title: Supported Indicators Change Notification ... Test objective: The objective is to test the dispatch of Supported Indicators Change Notification when new indicator values are available in the VNF, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF is instantiated, and a subscription for supported indicators change notifications is available in the VNF. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNF ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index 5ae4c24a..61bd84b7 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -17,7 +17,7 @@ GET VNF Indicators Subscriptions ... Test title: GET VNF Indicators Subscriptions ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -30,7 +30,7 @@ GET VNF Indicators Subscriptions with attribute-based filter ... Test title: GET VNF Indicators Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions using attribute-based filter and perform a JSON schema and content validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -44,7 +44,7 @@ GET VNF Indicators Subscriptions with invalid attribute-based filter ... Test title: GET VNF Indicators Subscriptions with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of all VNF indicators subscriptions fails when using invalid attribute-based filter. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -57,7 +57,7 @@ GET VNF Indicators Subscriptions with invalid resource endpoint ... Test title: GET VNF Indicators Subscriptions with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF indicators subscriptions fails when using invalid resource endpoint. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -70,7 +70,7 @@ Create new VNF indicator subscription ... Test title: Create new VNF indicator subscription ... Test objective: The objective is to test the creation of a new VNF indicator subscription perform a JSON schema and content validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: The VNF indicator subscription is successfully set and it matches the issued subscription @@ -85,7 +85,7 @@ PUT VNF Indicator Subscriptions - Method not implemented ... Test title: PUT VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF indicator subscriptions ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -97,7 +97,7 @@ PATCH VNF Indicator Subscriptions - Method not implemented ... Test title: PATCH VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicator subscriptions ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -109,7 +109,7 @@ DELETE VNF Indicator Subscriptions - Method not implemented ... Test title: DELETE VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicator subscriptions ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -121,7 +121,7 @@ GET VNF Indicators Subscriptions to get Paged Response ... Test title: GET VNF Indicators Subscriptions to get Paged Response ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions to get Paged Response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -134,7 +134,7 @@ GET VNF Indicators Subscriptions - Bad Request Response too Big ... Test title: GET VNF Indicators Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of all VNF indicators subscriptions fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -147,7 +147,7 @@ POST Create a new Subscription - Unprocessable Content ... Test title: POST Create a new Subscription - Unprocessable Content ... Test objective: The objective is to test that content type of the message content is supported and the message content of a request contains syntactically correct data but the data cannot be processed. ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,7 @@ Create new VNF indicator Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: SUT should support duplication of subscription creation ... Post-Conditions: In response header Location shall not be null @@ -174,7 +174,7 @@ Create new VNF indicator Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: SUT should not support duplication of subscription creation ... Post-Conditions: In response header Location shall not be null @@ -186,7 +186,7 @@ GET VNF Indicators Subscriptions with permitted authorization scope ... Test title: GET VNF Indicators Subscriptions with permitted authorization scope ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions and perform a JSON schema validation of the returned subscriptions data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -198,7 +198,7 @@ GET VNF Indicators Subscriptions with NOT permitted authorization scope ... Test title: GET VNF Indicators Subscriptions with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions and perform a JSON schema validation of the returned subscriptions data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/VNFIndicators.robot b/SOL002/VNFIndicator-API/VNFIndicators.robot index a3e6e5ca..78385d4d 100644 --- a/SOL002/VNFIndicator-API/VNFIndicators.robot +++ b/SOL002/VNFIndicator-API/VNFIndicators.robot @@ -13,7 +13,7 @@ Get all VNF Indicators ... Test title: Get all VNF Indicators ... Test objective: The objective is to test the retrieval of all the available VNF indicators and perform a JSON schema validation of the collected indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -26,7 +26,7 @@ Get VNF Indicators with attribute-based filter ... Test title: Get VNF Indicators with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF indicators using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -40,7 +40,7 @@ Get VNF Indicators with invalid attribute-based filter ... Test title: Get VNF Indicators with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -53,7 +53,7 @@ Get all VNF Indicators with malformed authorization token ... Test title: GET all VNF Indicators with malformed authrization token. ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using malformed authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -66,7 +66,7 @@ Get all VNF Indicators without authorization token ... Test title: GET all VNF Indicators without authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when omitting the authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -79,7 +79,7 @@ GET all VNF Indicators with expired or revoked authorization token ... Test title: GET all VNF Indicators with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using expired or revoked authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -92,7 +92,7 @@ Get all VNF Indicators with invalid resource endpoint ... Test title: GET all VNF Indicators with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -105,7 +105,7 @@ POST all VNF Indicators - Method not implemented ... Test title: POST all VNF Indicators - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF indicators ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -117,7 +117,7 @@ PUT all VNF Indicators - Method not implemented ... Test title: PUT all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF indicators ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH all VNF Indicators - Method not implemented ... Test title: PATCH all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicators ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE all VNF Indicators - Method not implemented ... Test title: DELETE all VNF Indicators - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicators ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -153,7 +153,7 @@ Get VNF Indicators to get Paged Response ... Test title: Get VNF Indicators to get Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF indicators with Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -166,7 +166,7 @@ Get VNF Indicators - Bad Request Response too Big ... Test title: Get VNF Indicators - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF indicators fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -178,7 +178,7 @@ Get all VNF Indicators with permitted authorization scope ... Test title: Get all VNF Indicators with permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF indicators and perform a JSON schema validation of the collected indicators data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -190,7 +190,7 @@ Get all VNF Indicators with not permitted authorization scope ... Test title: Get all VNF Indicators with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF indicators and perform a JSON schema validation of the collected indicators data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index 4dd13a9d..7332a2b5 100644 --- a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -13,7 +13,7 @@ Get Indicators for VNF Instance ... Test title: Get all performance indicators for a VNF instance ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance and perform a JSON schema validation of the returned indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Indicators for VNF Instance with attribute-based filter ... Test title: Get all performance indicators for a VNF instance with attribute-based filter ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance using attribute-based filter and perform a JSON schema validation of the returned indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -41,7 +41,7 @@ Get Indicators for VNF Instance with invalid attribute-based filter ... Test title: Get all performance indicators for a VNF instance with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of all performance indicators for a given VNF instance fails using invalid attribute-based filter. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -54,7 +54,7 @@ Get Indicators for VNF Instance with invalid resource identifier ... Test title: Get all performance indicators for a VNF instance with invalid resource identifier ... Test objective: The objective is to test that the retrieval of all performance indicators for a given VNF instance fails when using invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -67,7 +67,7 @@ POST Indicators for VNF instance - Method not implemented ... Test title: POST performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new performance indicators for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -79,7 +79,7 @@ PUT Indicators for VNF instance - Method not implemented ... Test title: PUT performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing performance indicators for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -91,7 +91,7 @@ PATCH Indicators for VNF instance - Method not implemented ... Test title: PATCH performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing performance indicators for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -103,7 +103,7 @@ DELETE Indicators for VNF instance - Method not implemented ... Test title: DELETE performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete performance indicators for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -115,7 +115,7 @@ Get Indicators for VNF Instance to get Paged Response ... Test title: Get Indicators for VNF Instance to get Paged Response ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance to get paged response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -128,7 +128,7 @@ Get Indicators for VNF Instance - Bad Request Response too Big ... Test title: Get Indicators for VNF Instance - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of all performance indicators for a given VNF instance fails when response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -140,7 +140,7 @@ Get Indicators for VNF Instance with permitted authorization scope ... Test title: Get all performance indicators for a VNF instance with permitted authorization scope ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance and perform a JSON schema validation of the returned indicators data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -153,7 +153,7 @@ Get Indicators for VNF Instance with NOT permitted authorization scope ... Test title: Get all performance indicators for a VNF instance with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance and perform a JSON schema validation of the returned indicators data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none -- GitLab From dbddffb8d29055657e33455668ebaae77075d776 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 10:26:07 +0500 Subject: [PATCH 016/141] update test cases of VNFIndicator-API as per SOL 002 version 5.1.1 --- SOL002/VNFIndicator-API/schemas/vnfIndicator.schema.json | 8 ++++++++ SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/SOL002/VNFIndicator-API/schemas/vnfIndicator.schema.json b/SOL002/VNFIndicator-API/schemas/vnfIndicator.schema.json index 209ea767..424aa504 100644 --- a/SOL002/VNFIndicator-API/schemas/vnfIndicator.schema.json +++ b/SOL002/VNFIndicator-API/schemas/vnfIndicator.schema.json @@ -24,6 +24,14 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, + "vnfcInstanceIds": { + "description": "The vnfcInstanceIds attribute is optionally present. If present, it contains the list of identifiers of VNFC instances which provide the indicator value(s).\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, "_links": { "description": "Links for this resource.\n", "type": "object", diff --git a/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json b/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json index 686df172..7b7b2440 100644 --- a/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json +++ b/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json @@ -26,6 +26,14 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, + "vnfcInstanceIds": { + "description": "The vnfcInstanceIds attribute is optionally present. If present, it contains the list of identifiers of VNFC instances which provide the indicator value(s).\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, "_links": { "description": "Links for this resource.\n", "type": "object", -- GitLab From eba7e1add2d8fcd57caaae959fd11a3f6aeb9a6f Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 10:29:50 +0500 Subject: [PATCH 017/141] editorial change: Reformatted schemas --- .../schemas/ApiVersionInformation.schema.json | 64 ++-- .../schemas/ProblemDetails.schema.json | 33 +- .../VnfIndicatorSubscriptions.schema.json | 280 +++++++-------- ...dicatorValueChangeNotification.schema.json | 320 +++++++++--------- .../schemas/vnfIndicators.schema.json | 118 +++---- 5 files changed, 423 insertions(+), 392 deletions(-) diff --git a/SOL002/VNFIndicator-API/schemas/ApiVersionInformation.schema.json b/SOL002/VNFIndicator-API/schemas/ApiVersionInformation.schema.json index a7964119..b3582ea4 100644 --- a/SOL002/VNFIndicator-API/schemas/ApiVersionInformation.schema.json +++ b/SOL002/VNFIndicator-API/schemas/ApiVersionInformation.schema.json @@ -1,36 +1,36 @@ { - "description": "This type represents API version information.\n", - "type": "object", - "required": [ - "uriPrefix", - "apiVersions" - ], - "properties": { - "uriPrefix": { - "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", - "type": "string" - }, - "apiVersions": { - "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "version" - ], - "properties": { - "version": { - "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", - "type": "string" - }, - "isDeprecated": { - "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", - "type": "boolean" - }, - "retirementDate": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" + "description": "This type represents API version information.\n", + "type": "object", + "required": [ + "uriPrefix", + "apiVersions" + ], + "properties": { + "uriPrefix": { + "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", + "type": "string" + }, + "apiVersions": { + "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", + "type": "string" + }, + "isDeprecated": { + "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", + "type": "boolean" + }, + "retirementDate": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" } } } diff --git a/SOL002/VNFIndicator-API/schemas/ProblemDetails.schema.json b/SOL002/VNFIndicator-API/schemas/ProblemDetails.schema.json index 2af3ef9b..5dd62437 100644 --- a/SOL002/VNFIndicator-API/schemas/ProblemDetails.schema.json +++ b/SOL002/VNFIndicator-API/schemas/ProblemDetails.schema.json @@ -1 +1,32 @@ -{ "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", "type": "object", "required": [ "status", "detail" ], "properties": { "type": { "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", "type": "string", "format": "URI" }, "title": { "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", "type": "string" }, "status": { "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", "type": "integer" }, "detail": { "description": "A human-readable explanation specific to this occurrence of the problem.\n", "type": "string" }, "instance": { "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", "type": "string", "format": "URI" } }} \ No newline at end of file +{ + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } +} \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json b/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json index 1c074e6d..425fe040 100644 --- a/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json +++ b/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json @@ -1,111 +1,109 @@ { - "type": "array", - "items": { - "description": "This type represents a subscription related to notifications about VNF indicator value changes.\n", + "type": "array", + "items": { + "description": "This type represents a subscription related to notifications about VNF indicator value changes.\n", + "type": "object", + "required": [ + "id", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "filter": { + "description": "This type represents a subscription filter for notifications related to VNF indicators.\nAt a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\nNOTE:\tThe permitted values of the \"notificationTypes\" attribute are spelled exactly as the names \n of the notification types to facilitate automated code generation systems.\n", "type": "object", - "required": [ - "id", - "callbackUri", - "_links" - ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "filter": { - "description": "This type represents a subscription filter for notifications related to VNF indicators.\nAt a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\nNOTE:\tThe permitted values of the \"notificationTypes\" attribute are spelled exactly as the names \n of the notification types to facilitate automated code generation systems.\n", + "vnfInstanceSubscriptionFilter": { + "description": "This type represents subscription filter criteria to match VNF instances. * NOTE 1:\tThe attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances\n that are based on certain VNFDs in a filter. They should not be used both in the same filter instance,\n but one alternative should be chosen.\n NOTE 2:\tThe attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF\n instances in a filter. They should not be used both in the same filter instance, but one alternative\n should be chosen.\n", "type": "object", - "properties": { - "vnfInstanceSubscriptionFilter": { - "description": "This type represents subscription filter criteria to match VNF instances. * NOTE 1:\tThe attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances\n that are based on certain VNFDs in a filter. They should not be used both in the same filter instance,\n but one alternative should be chosen.\n NOTE 2:\tThe attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF\n instances in a filter. They should not be used both in the same filter instance, but one alternative\n should be chosen.\n", - "type": "object", - "anyOf": [ + "anyOf": [ + { + "oneOf": [ { - "oneOf": [ - { - "required": [ - "vnfdId" - ] - }, - { - "required": [ - "vnfProductsFromProviders" - ] - } + "required": [ + "vnfdId" ] }, { - "oneOf": [ - { - "required": [ - "vnfInstanceIds" - ] - }, - { - "required": [ - "vnfInstanceNames" - ] - } + "required": [ + "vnfProductsFromProviders" ] } - ], - "properties": { - "vnfdIds": { - "description": "If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. See note 1.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } + ] + }, + { + "oneOf": [ + { + "required": [ + "vnfInstanceIds" + ] }, - "vnfProductsFromProviders": { - "description": "If present, match VNF instances that belong to VNF products from certain providers. See note 1.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "vnfProvider" - ], - "properties": { - "vnfProvider": { - "description": "Name of the VNF provider to match.\n", - "type": "string" - }, - "vnfProducts": { - "description": "If present, match VNF instances that belong to VNF products with certain product names, from one particular provider.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "vnfProductName" - ], - "properties": { - "vnfProductName": { - "description": "Name of the VNF product to match.\n", - "type": "string" - }, - "versions": { - "description": "If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "vnfSoftwareVersion" - ], - "properties": { - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersions": { - "description": "If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n", - "type": "array", - "items": { - "description": "A version.\n", - "type": "string" - } - } + { + "required": [ + "vnfInstanceNames" + ] + } + ] + } + ], + "properties": { + "vnfdIds": { + "description": "If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. See note 1.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "vnfProductsFromProviders": { + "description": "If present, match VNF instances that belong to VNF products from certain providers. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "vnfProvider" + ], + "properties": { + "vnfProvider": { + "description": "Name of the VNF provider to match.\n", + "type": "string" + }, + "vnfProducts": { + "description": "If present, match VNF instances that belong to VNF products with certain product names, from one particular provider.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "vnfProductName" + ], + "properties": { + "vnfProductName": { + "description": "Name of the VNF product to match.\n", + "type": "string" + }, + "versions": { + "description": "If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "vnfSoftwareVersion" + ], + "properties": { + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersions": { + "description": "If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n", + "type": "array", + "items": { + "description": "A version.\n", + "type": "string" } } } @@ -114,69 +112,71 @@ } } } - }, - "vnfInstanceIds": { - "description": "If present, match VNF instances with an instance identifier listed in this attribute. See note 2.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "vnfInstanceNames": { - "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. See note 2.\n", - "type": "array", - "items": { - "type": "string" - } } } }, - "notificationTypes": { - "description": "Match particular notification types. \nPermitted values: -\tVnfIndicatorValueChangeNotification -\tSupportedIndicatorsChangeNotification See note.\n", - "type": "string", - "enum": [ - "VnfIndicatorValueChangeNotification", - "SupportedIndicatorsChangeNotification" - ] + "vnfInstanceIds": { + "description": "If present, match VNF instances with an instance identifier listed in this attribute. See note 2.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } }, - "indicatorIds": { - "description": "Match particular VNF indicator identifiers.\n", + "vnfInstanceNames": { + "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. See note 2.\n", "type": "array", "items": { - "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" } } } }, - "callbackUri": { - "description": "The URI of the endpoint to send the notification to.\n", + "notificationTypes": { + "description": "Match particular notification types. \nPermitted values: -\tVnfIndicatorValueChangeNotification -\tSupportedIndicatorsChangeNotification See note.\n", "type": "string", - "format": "url" + "enum": [ + "VnfIndicatorValueChangeNotification", + "SupportedIndicatorsChangeNotification" + ] }, - "_links": { - "description": "Links for this resource.\n", + "indicatorIds": { + "description": "Match particular VNF indicator identifiers.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "The URI of the endpoint to send the notification to.\n", + "type": "string", + "format": "url" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", "required": [ - "self" + "href" ], "properties": { - "self": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } } } } } + } + } } \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/schemas/VnfIndicatorValueChangeNotification.schema.json b/SOL002/VNFIndicator-API/schemas/VnfIndicatorValueChangeNotification.schema.json index 7a33be24..f8a4f1e1 100644 --- a/SOL002/VNFIndicator-API/schemas/VnfIndicatorValueChangeNotification.schema.json +++ b/SOL002/VNFIndicator-API/schemas/VnfIndicatorValueChangeNotification.schema.json @@ -1,176 +1,176 @@ { "VnfIndicatorValueChangeNotification": { - "description": "This type represents a VNF indicator value change notification. * NOTE:\tETSI GS NFV-SOL 001 specifies the structure and\n format of the VNFD based on TOSCA specifications.\n", - "type": "object", - "required": [ - "id", - "notificationType", - "subscriptionId", - "timeStamp", - "vnfIndicatorId", - "value", - "vnfInstanceId", - "_links" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "notificationType": { - "description": "Discriminator for the different notification types. Shall be set to \"VnfIndicatorValueChangeNotification\" for this notification type.\n", - "type": "string" - }, - "subscriptionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "timeStamp": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "vnfIndicatorId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "name": { - "description": "Human readable name of the VNF indicator. Shall be present if defined in the VNFD.\n", - "type": "string" - }, - "value": { - "description": "Provides the value of the VNF indicator. The value format is defined in the VNFD. See note.\n", - "type": "object" - }, - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": [ - "vnfInstance", - "subscription" - ], - "properties": { - "vnfInstance": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } + "description": "This type represents a VNF indicator value change notification. * NOTE:\tETSI GS NFV-SOL 001 specifies the structure and\n format of the VNFD based on TOSCA specifications.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "vnfIndicatorId", + "value", + "vnfInstanceId", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"VnfIndicatorValueChangeNotification\" for this notification type.\n", + "type": "string" + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfIndicatorId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the VNF indicator. Shall be present if defined in the VNFD.\n", + "type": "string" }, - "subscription": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" + "value": { + "description": "Provides the value of the VNF indicator. The value format is defined in the VNFD. See note.\n", + "type": "object" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "vnfInstance", + "subscription" + ], + "properties": { + "vnfInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "subscription": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } } - } } - } } - } }, "SupportedIndicatorsChangeNotification": { - "description": "This type represents a notification to inform the receiver that the set of indicators\nsupported by a VNF instance has changed.\n* NOTE:\tETSI GS NFV-SOL 001 specifies the structure and\n format of the VNFD based on TOSCA specifications.\n", - "type": "object", - "required": [ - "id", - "notificationType", - "subscriptionId", - "timeStamp", - "vnfInstanceId" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "notificationType": { - "description": "Discriminator for the different notification types. Shall be set to \"SupportedIndicatorsChangeNotification\"\nfor this notification type.\n", - "type": "string" - }, - "subscriptionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "timeStamp": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "supportedIndicators": { - "description": "Set of VNF indicators supported by the VNF instance.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "vnfIndicatorId" - ], - "properties": { - "vnfIndicatorId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "description": "This type represents a notification to inform the receiver that the set of indicators\nsupported by a VNF instance has changed.\n* NOTE:\tETSI GS NFV-SOL 001 specifies the structure and\n format of the VNFD based on TOSCA specifications.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "vnfInstanceId" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "name": { - "description": "Human readable name of the VNF indicator. Shall be present if defined in the VNFD.\nSee note.\n", + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"SupportedIndicatorsChangeNotification\"\nfor this notification type.\n", "type": "string" - } - } - } - }, - "_links": { - "description": "Links for this resource.\n", - "type": "object", - "required": [ - "subscription" - ], - "properties": { - "vnfInstance": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "supportedIndicators": { + "description": "Set of VNF indicators supported by the VNF instance.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "vnfIndicatorId" + ], + "properties": { + "vnfIndicatorId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the VNF indicator. Shall be present if defined in the VNFD.\nSee note.\n", + "type": "string" + } + } } - } }, - "subscription": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "subscription" + ], + "properties": { + "vnfInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } } - } } - } } - } } - } \ No newline at end of file +} \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json b/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json index 7b7b2440..e0f0ab01 100644 --- a/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json +++ b/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json @@ -1,75 +1,75 @@ { - "type": "array", - "items": { - "description": "This type represents a VNF indicator value.\nNOTE:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications.\n", + "type": "array", + "items": { + "description": "This type represents a VNF indicator value.\nNOTE:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications.\n", + "type": "object", + "required": [ + "id", + "value", + "vnfInstanceId", + "_links" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the indicator. Shall be present if defined in the VNFD.\n", + "type": "string" + }, + "value": { + "description": "Provides the value of the indicator. The value format is defined in the VNFD. See note.\n", + "type": "object" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcInstanceIds": { + "description": "The vnfcInstanceIds attribute is optionally present. If present, it contains the list of identifiers of VNFC instances which provide the indicator value(s).\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "_links": { + "description": "Links for this resource.\n", "type": "object", "required": [ - "id", - "value", - "vnfInstanceId", - "_links" + "self", + "vnfInstance" ], "properties": { - "id": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "name": { - "description": "Human readable name of the indicator. Shall be present if defined in the VNFD.\n", - "type": "string" - }, - "value": { - "description": "Provides the value of the indicator. The value format is defined in the VNFD. See note.\n", - "type": "object" - }, - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } }, - "vnfcInstanceIds": { - "description": "The vnfcInstanceIds attribute is optionally present. If present, it contains the list of identifiers of VNFC instances which provide the indicator value(s).\n", - "type": "array", - "items": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - } - }, - "_links": { - "description": "Links for this resource.\n", + "vnfInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", "required": [ - "self", - "vnfInstance" + "href" ], "properties": { - "self": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "vnfInstance": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } } } } } + } + } } \ No newline at end of file -- GitLab From 9119a00d6cafd6bda2a4388a8dbbebda47557a3d Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 16:14:57 +0500 Subject: [PATCH 018/141] add header check for Location as per SOL002 specifications --- SOL002/VNFIndicator-API/Subscriptions.robot | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index 61bd84b7..47662285 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -76,6 +76,7 @@ Create new VNF indicator subscription ... Post-Conditions: The VNF indicator subscription is successfully set and it matches the issued subscription Send Post Request for VNF Indicator Subscription Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is VnfIndicatorSubscription Check HTTP Response Body Matches the Subscription Check Postcondition VNF Indicator Subscription Is Set @@ -166,6 +167,7 @@ Create new VNF indicator Subscription - DUPLICATION ... Post-Conditions: In response header Location shall not be null Post Create subscription - DUPLICATION Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is VnfIndicatorSubscription Check Operation Occurrence Id @@ -180,6 +182,7 @@ Create new VNF indicator Subscription - NO-DUPLICATION ... Post-Conditions: In response header Location shall not be null Post Create subscription - NO-DUPLICATION Check HTTP Response Status Code Is 303 + Check HTTP Response Header Contains Location Check Operation Occurrence Id GET VNF Indicators Subscriptions with permitted authorization scope [Documentation] Test ID: 6.3.2.4.14 -- GitLab From b6075ac174a33c12f1b7fe729573c698e279d43e Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 11:52:08 +0500 Subject: [PATCH 019/141] update api version in variable.txt --- SOL002/VNFIndicator-API/environment/variables.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL002/VNFIndicator-API/environment/variables.txt b/SOL002/VNFIndicator-API/environment/variables.txt index 7692af75..1b75d73d 100644 --- a/SOL002/VNFIndicator-API/environment/variables.txt +++ b/SOL002/VNFIndicator-API/environment/variables.txt @@ -50,7 +50,7 @@ ${INDICATORS_EM_SCOPE}= vnfind_by_em:v1:indicators ${SUBSCRIPTIONS_EM_SCOPE}= vnfind_by_em:v1:subscriptions ${OAUTH_Encryption_ALGORITHM}= HS256 ${NEG_SCOPE}= vnfind_by_vnf:v2:invalid -${API_VERSION}= 1.12.0 +${API_VERSION}= 1.13.0 ${erroneousVnfInstanceId} erroneousVnfInstanceId ${POS_FIELDS} name=vnfIndicator -- GitLab From dd644d3ddccd8b0431ecc518fba85455308911be Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 17:08:47 +0500 Subject: [PATCH 020/141] update SOL 002 version in test cases description from 4.5.1 to 5.1.1 --- .../CancelOperationTask.robot | 18 +++++----- .../ChangeCurrentVNFPackageTask.robot | 16 ++++----- .../ChangeExternalVNFConnectivityTask.robot | 16 ++++----- .../ChangeVNFFlavourTask.robot | 18 +++++----- .../CreateVNFSnapshotTask.robot | 20 +++++------ .../FailOperationTask.robot | 18 +++++----- .../HealVNFTask.robot | 18 +++++----- .../IndividualSubscription.robot | 14 ++++---- .../IndividualVNFInstance.robot | 20 +++++------ .../IndividualVNFSnapshot.robot | 18 +++++----- .../IndividualVnfLcmOperationOccurence.robot | 14 ++++---- .../InstantiateVNFTask.robot | 20 +++++------ .../NotificationEndpoint.robot | 6 ++-- .../Notifications.robot | 8 ++--- .../OperateVNFTask.robot | 18 +++++----- .../RetryOperationTask.robot | 18 +++++----- .../RevertToVNFSnapshotTask.robot | 18 +++++----- .../RollbackOperationTask.robot | 18 +++++----- .../ScaleVNFTask.robot | 18 +++++----- .../ScaleVNFToLevelTask.robot | 18 +++++----- .../Subscriptions.robot | 36 +++++++++---------- .../TerminateVNFTask.robot | 16 ++++----- .../VNFInstances.robot | 30 ++++++++-------- .../VNFSelectDeployableModules.robot | 14 ++++---- .../VNFSnapshots.robot | 32 ++++++++--------- .../VnfLcmOperationOccurences.robot | 32 ++++++++--------- 26 files changed, 246 insertions(+), 246 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot index e4fe77cf..996087f6 100644 --- a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -14,7 +14,7 @@ Post Cancel operation task ... Test title: POST Cancel operation task ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. ... Pre-conditions: the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: the resource is in FAILED_TEMP state @@ -27,7 +27,7 @@ Post Cancel operation task Conflict ... Test title: POST Cancel operation task Conflict ... Test objective: The POST method is NOT cancelling an ongoing VNF lifecycle operation due to the fact that the VNF instance resource is not in STARTING, PROCESSING or ROLLING_BACK state ... Pre-conditions: operation is not in STARTING, PROCESSING or ROLLING_BACK state - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ Post Cancel operation task Not Found ... Test title: POST Cancel operation task ... Test objective: The objective is to test that POST method cannot cancel a VNF lifecycle operation because the resource is not found ... Pre-conditions: - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Cancel operation task - Method not implemented ... Test title: GET Cancel operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ PUT Cancel operation task - Method not implemented ... Test title: PUT Cancel operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ PATCH Cancel operation task - Method not implemented ... Test title: PATCH Cancel operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ DELETE Cancel operation task - Method not implemented ... Test title: DELETE Cancel operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ Post Cancel operation task with permitted authorization scope ... Test title: POST Cancel operation task with permitted authorization scope ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state with permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: the resource is in FAILED_TEMP state @@ -113,7 +113,7 @@ Post Cancel operation task with not permitted authorization scope ... Test title: POST Cancel operation task with not permitted authorization scope ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state with not permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: the resource is in FAILED_TEMP state diff --git a/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot index 459a4906..a5b55364 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot @@ -13,7 +13,7 @@ POST Change current VNF Package Task ... Test title: POST Change current VNF Package Task ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Change current VNF Package Task - Conflict ... Test title: POST Change current VNF Package Task - Conflict ... Test objective: The objective is to test that the POST method cannot change the current VNF package task when another lifecycle management operation is ongoing. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: There is another lifecycle management operation ongoing. ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Change current VNF Package Task - Method not implemented ... Test title: GET Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Change current VNF Package Task - Method not implemented ... Test title: PUT Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Change current VNF Package Task - Method not implemented ... Test title: PATCH Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Change current VNF Package Task - Method not implemented ... Test title: DELETE Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ POST Change current VNF Package Task with permitted authorization scope ... Test title: POST Change current VNF Package Task with permitted authorization scope ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -98,7 +98,7 @@ POST Change current VNF Package Task with not permitted authorization scope ... Test title: POST Change current VNF Package Task with not permitted authorization scope ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based with not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index 484c2a3f..d5046bf1 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -13,7 +13,7 @@ POST Change external VNF connectivity ... Test title: POST Change external VNF connectivity ... Test objective: The objective is to test that POST method triggers a change in VNF external connectivity ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ GET Change external VNF connectivity - Method not implemented ... Test title: GET Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT Change external VNF connectivity - Method not implemented ... Test title: PUT Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH Change external VNF connectivity - Method not implemented ... Test title: PATCH Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE Change external VNF connectivity - Method not implemented ... Test title: DELETE Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST Change external VNF connectivity Conflict ... Test title: POST Change external VNF connectivity Conflict ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ POST Change external VNF connectivity with permitted authorization scope ... Test title: POST Change external VNF connectivity with permitted authorization value ... Test objective: The objective is to test that POST method triggers a change in VNF external connectivity with the permitted authorization value ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -98,7 +98,7 @@ POST Change external VNF connectivity with not permitted authorization scope ... Test title: POST Change external VNF connectivity with not permitted authorization value ... Test objective: The objective is to test that POST method triggers a change in VNF external connectivity with not permitted authorization value ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index def3f569..6741749b 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -13,7 +13,7 @@ POST Change deployment flavour of a vnfInstance ... Test title: POST Change deployment flavour of a vnfInstance ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because of a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Change deployment flavour of a vnfInstance Not Found ... Test title: POST Change deployment flavour of a vnfInstance Not Found ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because the VNF instance resource is not found. ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Change deployment flavour VNFInstance - Method not implemented ... Test title: GET Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Change deployment flavour VNFInstance - Method not implemented ... Test title: PUT Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Change deployment flavour VNFInstance - Method not implemented ... Test title: PATCH Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Change deployment flavour VNFInstance - Method not implemented ... Test title: DELETE Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ POST Change deployment flavour of a vnfInstance with permited authorization scop ... Test title: POST Change deployment flavour of a vnfInstance with permited authorization scope ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour with permited authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -112,7 +112,7 @@ POST Change deployment flavour of a vnfInstance with not permited authorization ... Test title: POST Change deployment flavour of a vnfInstance with not permited authorization scope ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour with not permited authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot index 39f6239a..2e9d0dcd 100644 --- a/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot +++ b/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot @@ -13,7 +13,7 @@ POST Create VNF Snapshot Task ... Test title: POST Create VNF Snapshot Task ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Create VNF Snapshot Task - NOT FOUND ... Test title: POST Create VNF Snapshot Task - NOT FOUND ... Test objective: The objective is to test that the POST method cannot request for a snapshot if the task is not supported for the VNF instance represented by the parent resource. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: Task is not supported for the VNF instance represented by the parent resource. ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Create VNF Snapshot Task - CONFLICT ... Test title: POST Create VNF Snapshot Task - CONFLICT ... Test objective: The objective is to test that the POST method cannot request for a snapshot when the VNF instance is in NOT_INSTANTIATED state. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: VNF instance is in NOT_INSTANTIATED state. ... Post-Conditions: none @@ -52,7 +52,7 @@ POST Create VNF Snapshot Task - UNPROCESSABLE CONTENT ... Test title: POST Create VNF Snapshot Task - UNPROCESSABLE CONTENT ... Test objective: The objective is to test that the POST method cannot request for a snapshot when the provided identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid. ... Post-Conditions: none @@ -65,7 +65,7 @@ GET Create VNF Snapshot Task - Method not implemented ... Test title: GET Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PUT Create VNF Snapshot Task - Method not implemented ... Test title: PUT Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ PATCH Create VNF Snapshot Task - Method not implemented ... Test title: PATCH Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ DELETE Create VNF Snapshot Task - Method not implemented ... Test title: DELETE Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Create VNF Snapshot Task with permitted authorization scope ... Test title: POST Create VNF Snapshot Task with permitted authorization scope ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -124,7 +124,7 @@ POST Create VNF Snapshot Task with not permitted authorization scope ... Test title: POST Create VNF Snapshot Task with not permitted authorization scope ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance with not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot index 1867bc63..f5b4933b 100644 --- a/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot @@ -12,7 +12,7 @@ POST Fail operation task ... Test title: POST Fail operation task ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation if that operation has experienced a failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Fail operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Fail operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method cannot mark as "finally failed" due to confilct with the state of LCM Operation Occurrence ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Fail operation task Not Found ... Test title: POST Fail operation task Not Found ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation because the operation is not supported ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Fail operation task - Method not implemented ... Test title: GET Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Fail operation task - Method not implemented ... Test title: PUT Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Fail operation task - Method not implemented ... Test title: PATCH Fail operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Fail operation task - Method not implemented ... Test title: DELETE Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ POST Fail operation task with permitted authorization scope ... Test title: POST Fail operation task with permitted authorization scope with permitted authorization scope ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation if that operation has experienced a failure with permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Fail operation task with not permitted authorization scope ... Test title: POST Fail operation task with permitted authorization scope with not permitted authorization scope ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation if that operation has experienced a failure with not permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot index 01bd06e9..f748eeba 100644 --- a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot @@ -13,7 +13,7 @@ POST Heal a vnfInstance ... Test title: POST Heal a vnfInstance ... Test objective: The objective is to test that POST method heal a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Heal a vnfInstance (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Heal a vnfInstance Not Found ... Test title: POST Heal a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed because the VNF instance resource is not found. ... Pre-conditions: the VNF instance resource is not existing - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Heal VNFInstance - Method not implemented ... Test title: GET Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Heal VNFInstance - Method not implemented ... Test title: PUT Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Heal VNFInstance - Method not implemented ... Test title: PATCH Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Heal VNFInstance - Method not implemented ... Test title: DELETE Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Heal a vnfInstance with permitted authorization scope ... Test title: POST Heal a vnfInstance with permitted authorization scope ... Test objective: The objective is to test that POST method heal a VNF instance with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Heal a vnfInstance with not permitted authorization scope ... Test title: POST Heal a vnfInstance with not permitted authorization scope ... Test objective: The objective is to test that POST method heal a VNF instance with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot index 3b0d668b..54a9462d 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the Get individual subscription ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE an individual subscription ... Test title: DELETE Individual Subscription ... Test objective: The objective is to test that the DELETE method removes an individual subscription ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -71,7 +71,7 @@ GET Individual Subscription with permitted authorization scope ... Test title: GET Individual Subscription with permitted authorization scope ... Test objective: The objective is to test the Get individual subscription with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ GET Individual Subscription with not permitted authorization scope ... Test title: GET Individual Subscription with not permitted authorization scope ... Test objective: The objective is to test the Get individual subscription with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 26dd5cbc..04225fd6 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -18,7 +18,7 @@ POST Individual VNFInstance - Method not implemented ... Test title: POST Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ GET Information about an individual VNF Instance ... Test title: GET Information about an individual VNF Instance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ PUT Individual VNFInstance - Method not implemented ... Test title: PUT Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance not modified @@ -57,7 +57,7 @@ PATCH Individual VNFInstance ... Test title: PATCH Individual VNFInstance ... Test objective: This method modifies an individual VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance modified @@ -70,7 +70,7 @@ PATCH Individual VNFInstance Precondition failed ... Test title: PATCH Individual VNFInstance Precondition failed ... Test objective: The objective is to that the modification of individual VNFInstance fails because precondition given in an HTTP request header is not fulfilled. Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ PATCH Individual VNFInstance Conflict ... Test title: PATCH Individual VNFInstance Conflict ... Test objective: The objective is to verify that modification operation cannot be executed currently, due to a conflict with the state of the VNF instance resource because another LCM Operation is ongoing. ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -96,7 +96,7 @@ DELETE Individual VNFInstance ... Test title: DELETE Individual VNFInstance ... Test objective: The objective is to delete a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance deleted @@ -108,7 +108,7 @@ DELETE Individual VNFInstance Conflict ... Test title: DELETE Individual VNFInstance Conflict ... Test objective: The objective is to verify that The operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -120,7 +120,7 @@ GET Information about an individual VNF Instance with permitted authorization sc ... Test title: GET Information about an individual VNF Instance with permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -134,7 +134,7 @@ GET Information about an individual VNF Instance with permitted authorization sc ... Test title: GET Information about an individual VNF Instance with not permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot index 8c01fa0d..fc04f553 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -8,7 +8,7 @@ POST Individual VNF Snapshot - Method not implemented ... Test title: POST Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -20,7 +20,7 @@ GET Information about an individual VNF Snapshot - SUCCESSFUL ... Test title: GET Information about an individual VNF Snapshot - SUCCESSFUL ... Test objective: The objective is to GET information about an individual VNF Snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -33,7 +33,7 @@ GET Information about an individual VNF Snapshot - NOT FOUND ... Test title: GET Information about an individual VNF Snapshot - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot fails when using an invalid resource identifier. ... Pre-conditions: At least one individual VNF Snapshot is available in the NFV-MANO. - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -46,7 +46,7 @@ PUT Individual VNF Snapshot - Method not implemented ... Test title: PUT Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF Snapshot not modified @@ -58,7 +58,7 @@ PATCH Individual VNF Snapshot - Method not implemented ... Test title: PATCH Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ DELETE Individual VNF Snapshot ... Test title: DELETE Individual VNF Snapshot ... Test objective: The objective is to delete a VNF Snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF Snapshot deleted @@ -82,7 +82,7 @@ DELETE Individual VNF Snapshot - Conflict ... Test title: DELETE Individual VNF Snapshot Conflict ... Test objective: The objective is to verify that The operation cannot be executed currently, due to a conflict with the state of the VNF Snapshot resource. ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: VNF snapshot is in use by some operation such as reverting a VNF instance to a VNF snapshot or creating a VNF snapshot package. ... Post-Conditions: none @@ -94,7 +94,7 @@ GET Information about an individual VNF Snapshot with permitted authorization sc ... Test title: GET Information about an individual VNF Snapshot with permitted authorization scope - SUCCESSFUL ... Test objective: The objective is to GET information about an individual VNF Snapshot with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ GET Information about an individual VNF Snapshot with not permitted authorizatio ... Test title: GET Information about an individual VNF Snapshot with not permitted authorization scope - SUCCESSFUL ... Test objective: The objective is to GET information about an individual VNF Snapshot with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 35a95e4d..b69413df 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -10,7 +10,7 @@ Post Individual VNF LCM OP occurrences - Method not implemented ... Test title: Post Individual VNF LCM OP occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -22,7 +22,7 @@ Get status information about individual VNF instances ... Test title: Get status information about individual VNF instances ... Test objective: The objective is to test that this method retrieve status information about a VNF lifecycle management operation occurrence ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT status information about multiple VNF instances - Method not implemented ... Test title: PUT status information about multiple VNF instances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH status information about multiple VNF instances - Method not implemented ... Test title: PATCH status information about multiple VNF instances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE status information about multiple VNF instances - Method not implemented ... Test title: DELETE status information about multiple VNF instances - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ Get status information about individual VNF instances with permitted authorizati ... Test title: Get status information about individual VNF instances with permitted authorization scope ... Test objective: The objective is to test that this method retrieve status information about a VNF lifecycle management operation occurrence with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ Get status information about individual VNF instances with not permitted authori ... Test title: Get status information about individual VNF instances with not permitted authorization scope ... Test objective: The objective is to test that this method retrieve status information about a VNF lifecycle management operation occurrence with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 6db96e3f..c79d6f1a 100644 --- a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -15,7 +15,7 @@ POST Instantiate a vnfInstance ... Test title: POST Instantiate a vnfInstance ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ POST Instantiate a vnfInstance Conflict ... Test title: POST Instantiate a vnfInstance Conflict ... Test objective: The objective is to verify that the instantiation of the vnf cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET Instantiate VNFInstance - Method not implemented ... Test title: GET Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ PUT Instantiate VNFInstance - Method not implemented ... Test title: PUT Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PATCH Instantiate VNFInstance - Method not implemented ... Test title: PATCH Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ DELETE Instantiate VNFInstance - Method not implemented ... Test title: DELETE Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ POST Instantiate a vnfInstance with TaretScaleLevelId ... Test title: POST Instantiate a vnfInstance with TaretScaleLevelId attribute ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ POST Instantiate individual vnfInstance with instantiationLevelId ... Test title: POST Instantiate a vnfInstance with instantiationLevelId attribute ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ POST Instantiate a vnfInstance with permited authorization scope ... Test title: POST Instantiate a vnfInstance with permited authorization scope ... Test objective: The objective is to instantiate a VNF instance using correct OAuth scope value with permited authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ POST Instantiate a vnfInstance with not permited authorization scope ... Test title: POST Instantiate a vnfInstance with non permited authorization scope ... Test objective: The objective is to instantiate a VNF instance using incorrect OAuth scope value with not permited authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot index 25bb81a4..451c5f51 100644 --- a/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot @@ -14,7 +14,7 @@ VNF LCM Operation Occurrence Notification ... Test title: VNF LCM Operation Occurrence Start Notification ... Test objective: The objective is to test that VNF LCM Operation Occurrence Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test that VNF Identifier Creation Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for VNF Identifier Creation Notification is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test that VNF Identifier Deletion Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for VNF Identifier Deletion Notification is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/Notifications.robot b/SOL002/VNFLifecycleManagement-API/Notifications.robot index be8e0e94..bce80641 100644 --- a/SOL002/VNFLifecycleManagement-API/Notifications.robot +++ b/SOL002/VNFLifecycleManagement-API/Notifications.robot @@ -13,7 +13,7 @@ VNF LCM Operation Occurrence Start Notification ... Test title: VNF LCM Operation Occurrence Start Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Start Notification when a new VNF LCM operation is started in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ VNF LCM Operation Occurrence Result Notification ... Test title: VNF LCM Operation Occurrence Result Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Result Notification when a VNF LCM operation is completed in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: An VNF LCM operation is in progress, and a subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Creation Notification when a new VNF instance resource is created in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Deletion Notification when a VNF instance resource is deleted in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance resource is created, and a subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot index b803e51e..7ad05a0d 100644 --- a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -13,7 +13,7 @@ POST Operate a vnfInstance ... Test title: POST Operate a vnfInstance ... Test objective: The objective is to test that POST method operate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: the VNF instance resource is in NOT_INSTANTIATED state - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Operate a vnfInstance Not Found ... Test title: POST Operate a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed currently, because the resource is not existing ... Pre-conditions: the VNF instance resource is in not existing - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Operate VNFInstance - Method not implemented ... Test title: GET Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Operate VNFInstance - Method not implemented ... Test title: PUT Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Operate VNFInstance - Method not implemented ... Test title: PATCH Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Operate VNFInstance - Method not implemented ... Test title: DELETE Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ POST Operate a vnfInstance with permitted authorization scope ... Test title: POST Operate a vnfInstance with permitted authorization scope ... Test objective: The objective is to test that POST method operate a VNF instance with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ POST Operate a vnfInstance with not permitted authorization scope ... Test title: POST Operate a vnfInstance with not permitted authorization scope ... Test objective: The objective is to test that POST method operate a VNF instance with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot index 53c76dc3..db4a4c8d 100644 --- a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -14,7 +14,7 @@ POST Retry operation task ... Test title: POST Retry operation task ... Test objective: The objective is to test that the POST method initiates retrying a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Retry operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Retry operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that the retry operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. (i.e. the VNF instance resource is not in FAILED_TEMP state) ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Retry operation task Not Found ... Test title: POST Retry operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Retry operation task - Method not implemented ... Test title: GET Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Retry operation task - Method not implemented ... Test title: PUT Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Retry operation task - Method not implemented ... Test title: PATCH Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Retry operation task - Method not implemented ... Test title: DELETE Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Retry operation task with permitted authorization scope ... Test title: POST Retry operation task with permitted authorization scope ... Test objective: The objective is to test that the POST method initiates retrying a VNF lifecycle operation if that operation has experienced a temporary failure with permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Retry operation task with not permitted authorization scope ... Test title: POST Retry operation task with not permitted authorization scope ... Test objective: The objective is to test that the POST method initiates retrying a VNF lifecycle operation if that operation has experienced a temporary failure with not permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot index 0d316817..6997b80a 100644 --- a/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -13,7 +13,7 @@ POST Revert to VNF Snapshot Task ... Test title: POST Revert to VNF Snapshot Task ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Revert to VNF Snapshot Task - NOT FOUND ... Test title: POST Revert to VNF Snapshot Task - NOT FOUND ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot if the task is not supported for the VNF instance represented by the parent resource. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: Task is not supported for the VNF instance represented by the parent resource. ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Revert to VNF Snapshot Task - CONFLICT ... Test title: POST Revert to VNF Snapshot Task - CONFLICT ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot when the VNF instance is in NOT_INSTANTIATED state. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: VNF instance is in NOT_INSTANTIATED state. ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Revert to VNF Snapshot Task - Method not implemented ... Test title: GET Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Revert to VNF Snapshot Task - Method not implemented ... Test title: PUT Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Revert to VNF Snapshot Task - Method not implemented ... Test title: PATCH Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Revert to VNF Snapshot Task - Method not implemented ... Test title: DELETE Revert to sVNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ POST Revert to VNF Snapshot Task with permitted authorization scope ... Test title: POST Revert to VNF Snapshot Task with permitted authorization scope. ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -111,7 +111,7 @@ POST Revert to VNF Snapshot Task with not permitted authorization scope ... Test title: POST Revert to VNF Snapshot Task with not permitted authorization scope. ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot index 301ded5e..98c30329 100644 --- a/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -14,7 +14,7 @@ POST Rollback operation task ... Test title: POST Rollback operation task ... Test objective: The objective is to test that POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method The POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Rollback operation task Not Found ... Test title: POST Rollback operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Rollback operation task - Method not implemented ... Test title: GET Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Rollback operation task - Method not implemented ... Test title: PUT Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Rollback operation task - Method not implemented ... Test title: PATCH Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Rollback operation task - Method not implemented ... Test title: DELETE Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Rollback operation task with permitted authorization value ... Test title: POST Rollback operation task with permitted authorization value. ... Test objective: The objective is to test that POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure with permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Rollback operation task with not permitted authorization value ... Test title: POST Rollback operation task with not permitted authorization value. ... Test objective: The objective is to test that POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure with not permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot index 44721d4d..976b7041 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -13,7 +13,7 @@ POST Scale a vnfInstance ... Test title: POST Scale a vnfInstance ... Test objective: The objective is to scale a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Scale a vnfInstance Not Found ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Scale VNFInstance - Method not implemented ... Test title: GET Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Scale VNFInstance - Method not implemented ... Test title: PUT Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Scale VNFInstance - Method not implemented ... Test title: PATCH Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Scale VNFInstance - Method not implemented ... Test title: DELETE Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Scale a vnfInstance with permited authorization scope ... Test title: POST Scale a vnfInstance with permited authorization scope ... Test objective: The objective is to scale a VNF instance with permited authorization scope with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Scale a vnfInstance with not permited authorization scope ... Test title: POST Scale a vnfInstance with not permited authorization scope ... Test objective: The objective is to scale a VNF instance with not permited authorization scope with not permited authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 9f37e425..5fd08f49 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -12,7 +12,7 @@ POST Scale a vnfInstance to level with Attribute instantiationLevelId ... Test title: POST Scale a vnfInstance to level with instantiationLevelId attribute ... Test objective: The objective is to scale a VNF instance to a target level. ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Scale a vnfInstance Not Found ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the VNF Scale operation fails when the VNF instance resource is not present ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Scale to level VNFInstance - Method not implemented ... Test title: GET Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Scale to level VNFInstance - Method not implemented ... Test title: PUT Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Scale to level VNFInstance - Method not implemented ... Test title: PATCH Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Scale to level VNFInstance - Method not implemented ... Test title: DELETE Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Scale a vnfInstance to level with Attribute instantiationLevelId and permit ... Test title: POST Scale a vnfInstance to level with instantiationLevelId attribute and permitted authorization scope ... Test objective: The objective is to scale a VNF instance to a target level using OAuth token with permitted scope ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Scale a vnfInstance to level with Attribute instantiationLevelId and not pe ... Test title: POST Scale a vnfInstance to level with instantiationLevelId attribute and not permitted authorization scope ... Test objective: The objective is to scale a VNF instance to a target level using OAuth token with not permitted scope ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot index 13e08586..7bcbe8b8 100644 --- a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot @@ -15,7 +15,7 @@ POST Create a new subscription ... Test title: POST Create a new subscription ... Test objective: The POST method creates a new subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -28,7 +28,7 @@ POST Create a new Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: SUT should support duplication of subscription creation ... Post-Conditions: in response header Location shall not be null @@ -41,7 +41,7 @@ POST Create a new Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: SUT should not support duplication of subscription creation ... Post-Conditions: in response header Location shall not be null @@ -54,7 +54,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET Subscription - Filter ... Test title: GET Subscriptions - Filter ... Test objective: The objective is Get the list of active subscriptions using a "filter" ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is Get the list of active subscriptions using a filter ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions with all_fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ GET subscriptions with exclude_default attribute selector ... Test title: GET subscriptions with exclude_default attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -119,7 +119,7 @@ GET subscriptions with fields attribute selector ... Test title: GET subscriptions with fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -132,7 +132,7 @@ GET subscriptions with exclude_fields attribute selector ... Test title: GET subscriptions with exclude_fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -145,7 +145,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -157,7 +157,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -169,7 +169,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: check that resources are not deleted @@ -182,7 +182,7 @@ POST Create a new Subscription - Unprocessable Content ... Test title: POST Create a new Subscription - Unprocessable Content ... Test objective: The objective is to test that content type of the message content is supported and the message content of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -195,7 +195,7 @@ GET information about multiple subscriptions to get Paged Response ... Test title: GET information about multiple subscriptions to get Paged Response ... Test objective: The objective is to retrieve information about the subscriptions to get paged response ... Pre-conditions: - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -208,7 +208,7 @@ GET information about multiple subscriptions for Bad Request Response too big ... Test title: GET information about multiple subscriptions for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about subscriptions when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -220,7 +220,7 @@ POST Create a new subscription with permitted authorization scope ... Test title: POST Create a new subscription with permitted authorization scope ... Test objective: The POST method creates a new subscription with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -232,7 +232,7 @@ POST Create a new subscription with not permitted authorization scope ... Test title: POST Create a new subscription with not permitted authorization scope ... Test objective: The POST method creates a new subscription with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot index ca634c01..e955e495 100644 --- a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -13,7 +13,7 @@ POST Terminate a vnfInstance ... Test title: POST Terminate a vnfInstance ... Test objective: The objective is to test that POST method terminate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is in NOT_INSTANTIATED state - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Terminate VNFInstance - Method not implemented ... Test title: GET Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Terminate VNFInstance - Method not implemented ... Test title: PUT Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Terminate VNFInstance - Method not implemented ... Test title: PATCH Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Terminate VNFInstance - Method not implemented ... Test title: DELETE Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ POST Terminate a vnfInstance with permited authorization scope ... Test title: POST Terminate a vnfInstance with permited authorization scope ... Test objective: The objective is to test that POST method terminate a VNF instance with permited authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ POST Terminate a vnfInstance with not permited authorization scope ... Test title: POST Terminate a vnfInstance with not permited authorization scope ... Test objective: The objective is to test that POST method terminate a VNF instance with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index 4358e7be..79fec640 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -12,7 +12,7 @@ POST Create a new vnfInstance ... Test title: POST Create a new vnfInstance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance created @@ -26,7 +26,7 @@ GET information about multiple VNF instances ... Test title: GET information about multiple VNF instances ... Test objective: The objective is to get information about multiples VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET information about multiple VNF instances Bad Request Invalid attribute-based ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF instances with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET information about multiple VNF instances Bad Request Invalid attribute selec ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF instances with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ GET information about multiple VNF instances with "all_fields" attribute selecto ... Test title: GET information about multiple VNF instances with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ GET information about multiple VNF instances with "exclude_default" attribute se ... Test title: GET information about multiple VNF instances with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ GET information about multiple VNF instances with "fields" attribute selector ... Test title: GET information about multiple VNF instances with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ GET information about multiple VNF instances with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF instances with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ PUT VNFInstances - Method not implemented ... Test title: PUT VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ PATCH VNFInstances - Method not implemented ... Test title: PATCH VNFInstances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ DELETE VNFInstances - Method not implemented ... Test title: DELETE VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance not deleted @@ -154,7 +154,7 @@ GET information about multiple VNF instances with "exclude_default" and "fields" ... Test title: GET information about multiple VNF instances with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -167,7 +167,7 @@ POST Create a new vnfInstance - UNPROCESSABLE CONTENT ... Test title: POST Create a new vnfInstance - UNPROCESSABLE CONTENT ... Test objective: The objective is to test that a new VNF instance resource is not created when ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: vnfdId of the referenced VNF package is not in ENABLED state or does not exist. ... Post-Conditions: VNF instance created @@ -179,7 +179,7 @@ POST Create a new vnfInstance with permitted authorization scope ... Test title: POST Create a new vnfInstance with permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance created @@ -192,7 +192,7 @@ POST Create a new vnfInstance with not permitted authorization scope ... Test title: POST Create a new vnfInstance with not permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance created diff --git a/SOL002/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot b/SOL002/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot index 5fdf62ee..8718b492 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot @@ -12,7 +12,7 @@ POST Select VNF Deployable Module ... Test title: POST Select VNF Deployable Module ... Test objective: The objective is to select VNF Deployable Module ... Pre-conditions: The VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.11b.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11b.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Select VNF Deployable Module Not Found ... Test title: POST Select VNF Deployable Module Not Found ... Test objective: The objective is to test that the POST Select VNF Deployable Module fails when the resource is not present. ... Pre-conditions: none - ... Reference: Clause 5.4.11b.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11b.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Select VNF Deployable Module with conflict (Not Instantiated) ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation fails when there is a conflict with the resource state. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.11b.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11b.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Select VNF Deployable Module - Method not implemented ... Test title: GET Select VNF Deployable Module - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11b.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11b.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Select VNF Deployable Module - Method not implemented ... Test title: PUT Select VNF Deployable Module - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11b.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11b.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Select VNF Deployable Module - Method Not implemented ... Test title: PATCH Select VNF Deployable Module - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11b.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11b.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Select VNF Deployable Module - Method Not implemented ... Test title: DELETE Select VNF Deployable Module - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11b.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11b.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot index 0556b056..588cff4f 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -8,7 +8,7 @@ POST Create a new VNF Snapshot ... Test title: POST Create a new VNF Snapshot ... Test objective: The objective is to create a new VNF snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF snapshot is created @@ -22,7 +22,7 @@ GET information about multiple VNF Snapshots ... Test title: GET information about multiple VNF Snapshots ... Test objective: The objective is to get information about multiples VNF snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -35,7 +35,7 @@ GET information about multiple VNF Snapshots Bad Request Invalid attribute-based ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ GET information about multiple VNF Snapshots Bad Request Invalid attribute selec ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ GET information about multiple VNF Snapshots with "all_fields" attribute selecto ... Test title: GET information about multiple VNF Snapshots with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ GET information about multiple VNF Snapshots with "exclude_default" attribute se ... Test title: GET information about multiple VNF Snapshots with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ GET information about multiple VNF Snapshots with "fields" attribute selector ... Test title: GET information about multiple VNF Snapshots with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ GET information about multiple VNF Snapshots with "exclude_default" and "fields" ... Test title: GET information about multiple VNF Snapshots with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ GET information about multiple VNF Snapshots with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF Snapshots with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ GET VNF Snapshots - Bad Request Response too Big ... Test title: GET VNF Snapshots - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing VNF Snapshots list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: VNFM does not support paged response. ... Post-Conditions: none @@ -139,7 +139,7 @@ GET VNF Snapshots as Paged Response ... Test title: GET VNF Snapshots as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshots as paged response. ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: VNFM supports paged response. ... Post-Conditions: none @@ -152,7 +152,7 @@ PUT VNF Snapshots - Method not implemented ... Test title: PUT VNF Snapshots - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ PATCH VNF Snapshots - Method not implemented ... Test title: PATCH VNF Snapshots - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -176,7 +176,7 @@ DELETE VNF Snapshots - Method not implemented ... Test title: DELETE VNF Snapshots - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance not deleted @@ -187,7 +187,7 @@ POST Create a new VNF Snapshot with permitted authorization scope ... Test title: POST Create a new VNF Snapshot with permitted authorization scope ... Test objective: The objective is to create a new VNF snapshot with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF snapshot is created @@ -200,7 +200,7 @@ POST Create a new VNF Snapshot with not permitted authorization scope ... Test title: POST Create a new VNF Snapshot with not permitted authorization scope ... Test objective: The objective is to create a new VNF snapshot with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF snapshot is created diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index ea4973ce..e26c9267 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -13,7 +13,7 @@ POST VNF LCM operation occurrences - Method not implemented ... Test title: POST VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET status information about multiple VNF LCM operation occurrences ... Test title: GET status information about multiple VNF LCM operation occurrences ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET status information about multiple VNF LCM operation occurrences Bad Request ... Test title: GET status information about multiple VNF LCM operation occurrences Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET status information about multiple VNF LCM Operation occurrences Bad Request ... Test title: GET status information about multiple VNF LCM Operation occurrences Bad Request Invalid attribute selector ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ GET status information about multiple VNF LCM Operation occurrences with "all_fi ... Test title: GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ GET status information about multiple VNF LCM Operation occurrences with "exlude ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ GET status information about multiple VNF LCM Operation occurrences with "fields ... Test title: GET status information about multiple VNF LCM Operation OCC with "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ GET status information about multiple VNF LCM Operation occurrences with "exclud ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ PUT status information about multiple VNF LCM operation occurrences - Method not ... Test title: PUT status information about multiple VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH status information about multiple VNF LCM operation occurrences - Method n ... Test title: PATCH status information about multiple VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE status information about multiple VNF LCM operation occurrences - Method ... Test title: DELETE status information about multiple VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ GET status information about multiple VNF LCM operation occurances to get Paged ... Test title: GET status information about multiple VNF LCM operation occurances to get Paged Response ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences to get paged response. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -166,7 +166,7 @@ GET status information about multiple VNF LCM Operation occurrences Bad Request ... Test title: GET status information about multiple VNF LCM Operation occurrences Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because Response is too big. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -179,7 +179,7 @@ GET status information about multiple VNF LCM Operation occurrences with "exlude ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" and "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -191,7 +191,7 @@ GET status information about multiple VNF LCM operation occurrences with permitt ... Test title: GET status information about multiple VNF LCM operation occurrences with permitted authorization scope ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -204,7 +204,7 @@ GET status information about multiple VNF LCM operation occurrences with not per ... Test title: GET status information about multiple VNF LCM operation occurrences with not permitted authorization scope ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none -- GitLab From 2731a03bcfce9844af9e59fe4176dcefdc664a5d Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 17:14:51 +0500 Subject: [PATCH 021/141] Editorial Changes: Reformat schemas --- .../schemas/ApiVersionInformation.schema.json | 64 +- ...perationOccurrenceNotification.schema.json | 2304 ++++---- .../schemas/VnfSnapshotInfo.schema.json | 4936 ++++++++--------- .../schemas/vnfInstance.schema.json | 4 +- .../schemas/vnfInstances.schema.json | 4 +- 5 files changed, 3656 insertions(+), 3656 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/schemas/ApiVersionInformation.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/ApiVersionInformation.schema.json index a7964119..b3582ea4 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/ApiVersionInformation.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/ApiVersionInformation.schema.json @@ -1,36 +1,36 @@ { - "description": "This type represents API version information.\n", - "type": "object", - "required": [ - "uriPrefix", - "apiVersions" - ], - "properties": { - "uriPrefix": { - "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", - "type": "string" - }, - "apiVersions": { - "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "version" - ], - "properties": { - "version": { - "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", - "type": "string" - }, - "isDeprecated": { - "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", - "type": "boolean" - }, - "retirementDate": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" + "description": "This type represents API version information.\n", + "type": "object", + "required": [ + "uriPrefix", + "apiVersions" + ], + "properties": { + "uriPrefix": { + "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", + "type": "string" + }, + "apiVersions": { + "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", + "type": "string" + }, + "isDeprecated": { + "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", + "type": "boolean" + }, + "retirementDate": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" } } } diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index 09765784..f65e7b43 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -2,1257 +2,1257 @@ "description": "This type represents a VNF lifecycle management operation occurrence notification, which informs the receiver of changes in the VNF lifecycle caused by a VNF LCM operation occurrence. The support of the notification is mandatory. This notification shall be triggered by the VNFM when there is a change in the VNF lifecycle caused by a VNF LCM operation occurrence, including: * Instantiation of the VNF * Scaling of the VNF instance (including auto-scaling) * Healing of the VNF instance (including auto-healing) * Change of the state of the VNF instance (i.e. Operate VNF) * Change of the deployment flavour of the VNF instance * Change of the external connectivity of the VNF instance * Termination of the VNF instance * Modification of VNF instance information and/or VNF configurable\n properties through the \"PATCH\" method on the \"Individual VNF instance\"\n resource.\nIf this is the initial notification about the start of a VNF LCM operation occurrence, it is assumed that the notification is sent by the VNFM before any action (including sending the grant request) is taken as part of the LCM operation. Due to possible race conditions, the \"start\" notification, the grant request and the LCM operation acknowledgment can arrive in any order at the NFVO, and the NFVO shall be able to handle such a situation. If this is a notification about a final or intermediate result state of a VNF LCM operation occurrence, the notification shall be sent after all related actions of the LCM operation that led to this state have been executed. The new state shall be set in the \"Individual VNF LCM operation occurrence\" resource before the notification about the state change is sent. * NOTE 1:\tShall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set\n to \"FULL\" and the operation has performed any resource modification. Shall be absent otherwise.\n This attribute contains information about the cumulative changes to virtualised resources that\n were performed so far by the VNF LCM operation occurrence and by any of the error handling\n procedures for that operation occurrence.\n NOTE 2:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed\n for signalling the different types of changes, i.e. one per virtual link and change type.\n For instance, in the case of signalling affected VL instances involving the addition of a particular\n VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition of the VL by using\n the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\", and another\n \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the\n \"changeType\" equal to \"LINK_PORT_ADDED\".\n NOTE 3: Not more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present.\n", "type": "object", "required": [ - "id", - "notificationType", - "subscriptionId", - "timeStamp", - "notificationStatus", - "operationState", - "vnfInstanceId", - "operation", - "isAutomaticInvocation", - "vnfLcmOpOccId", - "_links" + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "notificationStatus", + "operationState", + "vnfInstanceId", + "operation", + "isAutomaticInvocation", + "vnfLcmOpOccId", + "_links" ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "notificationType": { - "description": "Discriminator for the different notification types. Shall be set to \"VnfLcmOperationOccurrenceNotification\" for this notification type.\n", - "type": "string", - "enum": [ - "VnfLcmOperationOccurrenceNotification" - ] - }, - "subscriptionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "timeStamp": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "notificationStatus": { - "description": "Indicates whether this notification reports about the start of a lifecycle operation or the result of a lifecycle operation. Permitted values: * START: Informs about the start of the VNF LCM operation\n occurrence.\n* RESULT: Informs about the final or intermediate result of the VNF\n LCM operation occurrence.\n", - "type": "string", - "enum": [ - "START", - "RESULT" - ] - }, - "operationState": { - "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The LCM operation has been completed successfully. FAILED_TEMP: The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED: The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK: The LCM operation is currently being rolled back. ROLLED_BACK: The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n", - "type": "string", - "enum": [ - "STARTING", - "PROCESSING", - "COMPLETED", - "FAILED_TEMP", - "FAILED", - "ROLLING_BACK", - "ROLLED_BACK" - ] - }, - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", - "type": "string", - "enum": [ - "INSTANTIATE", - "SCALE", - "SCALE_TO_LEVEL", - "CHANGE_FLAVOUR", - "TERMINATE", - "HEAL", - "OPERATE", - "CHANGE_EXT_CONN", - "MODIFY_INFO", - "CREATE_SNAPSHOT", - "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" - ] - }, - "isAutomaticInvocation": { - "description": "Set to true if this VNF LCM operation occurrence has been triggered by an automated procedure inside the VNFM (i.e. ScaleVnf / ScaleVnfToLevel triggered by auto-scale, or HealVnf triggered by auto-heal). Set to false otherwise.\n", - "type": "boolean" - }, - "verbosity": { - "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", - "type": "string", - "enum": [ - "FULL", - "SHORT" - ] - }, - "vnfLcmOpOccId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "affectedVnfcs": { - "description": "Information about VNFC instances that were affected during the lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n", - "type": "object", - "required": [ - "id", - "vduId", - "changeType", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY" - ] - }, - "computeResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"VnfLcmOperationOccurrenceNotification\" for this notification type.\n", + "type": "string", + "enum": [ + "VnfLcmOperationOccurrenceNotification" + ] + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notificationStatus": { + "description": "Indicates whether this notification reports about the start of a lifecycle operation or the result of a lifecycle operation. Permitted values: * START: Informs about the start of the VNF LCM operation\n occurrence.\n* RESULT: Informs about the final or intermediate result of the VNF\n LCM operation occurrence.\n", + "type": "string", + "enum": [ + "START", + "RESULT" + ] + }, + "operationState": { + "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The LCM operation has been completed successfully. FAILED_TEMP: The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED: The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK: The LCM operation is currently being rolled back. ROLLED_BACK: The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n", + "type": "string", + "enum": [ + "STARTING", + "PROCESSING", + "COMPLETED", + "FAILED_TEMP", + "FAILED", + "ROLLING_BACK", + "ROLLED_BACK" + ] + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operation": { + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "SCALE_TO_LEVEL", + "CHANGE_FLAVOUR", + "TERMINATE", + "HEAL", + "OPERATE", + "CHANGE_EXT_CONN", + "MODIFY_INFO", + "CREATE_SNAPSHOT", + "REVERT_TO_SNAPSHOT", + "CHANGE_VNFPKG" + ] + }, + "isAutomaticInvocation": { + "description": "Set to true if this VNF LCM operation occurrence has been triggered by an automated procedure inside the VNFM (i.e. ScaleVnf / ScaleVnfToLevel triggered by auto-scale, or HealVnf triggered by auto-heal). Set to false otherwise.\n", + "type": "boolean" + }, + "verbosity": { + "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", + "type": "string", + "enum": [ + "FULL", + "SHORT" + ] + }, + "vnfLcmOpOccId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "affectedVnfcs": { + "description": "Information about VNFC instances that were affected during the lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n", + "type": "object", + "required": [ + "id", + "vduId", + "changeType", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "affectedVnfcCpIds": { - "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "addedStorageResourceIds": { - "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "removedStorageResourceIds": { - "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - } - } - } - }, - "affectedVirtualLinks": { - "description": "Information about VL instances that were affected during the lifecycle operation. See note 1 and note 2.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\nNOTE:\tWhen signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, \n the \"networkResource\" attribute refers to the affected virtual link instance, not the link port \n instance. The resource handles of the affected VNF link ports can be found by dereferencing the \n identifiers in the \"vnfLinkPortIds\" attribute.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "changeType", - "networkResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY", - "LINK_PORT_ADDED", - "LINK_PORT_REMOVED" - ] - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Network MCIO that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "affectedVnfcCpIds": { + "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "addedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "removedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } - } - }, - "vnfLinkPortIds": { - "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references a \"VnfLinkPortInfo\" structure.\nShall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related \"VnfLinkPortInfo\" structures are present (case \"added\") or have been present (case \"removed\") in the \"VnfVirtualLinkResourceInfo\" or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResourceInfo\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. See note.\n", - "type": "array", - "items": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } - } - } - }, - "affectedExtLinkPorts": { - "description": "Information about external VNF link ports that were affected during the lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\n", - "type": "object", - "required": [ - "id", - "changeType", - "extCpInstanceId", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: -\tADDED - MODIFIED -\tREMOVED\n", - "type": "string", - "enum": [ - "ADDED", - "MODIFIED", - "REMOVED" - ] - }, - "extCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + }, + "affectedVirtualLinks": { + "description": "Information about VL instances that were affected during the lifecycle operation. See note 1 and note 2.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\nNOTE:\tWhen signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, \n the \"networkResource\" attribute refers to the affected virtual link instance, not the link port \n instance. The resource handles of the affected VNF link ports can be found by dereferencing the \n identifiers in the \"vnfLinkPortIds\" attribute.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "changeType", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY", + "LINK_PORT_ADDED", + "LINK_PORT_REMOVED" + ] }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource or Network MCIO that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "vnfLinkPortIds": { + "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references a \"VnfLinkPortInfo\" structure.\nShall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related \"VnfLinkPortInfo\" structures are present (case \"added\") or have been present (case \"removed\") in the \"VnfVirtualLinkResourceInfo\" or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResourceInfo\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. See note.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } - } } - } - } - }, - "affectedVirtualStorages": { - "description": "Information about virtualised storage instances that were affected during the lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "changeType", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY" - ] - }, - "storageResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Storage MCIO that is used by a VNF instance. Information about the resource is available from the VIM or the CISM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + }, + "affectedExtLinkPorts": { + "description": "Information about external VNF link ports that were affected during the lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\n", + "type": "object", + "required": [ + "id", + "changeType", + "extCpInstanceId", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "changeType": { + "description": "Signals the type of change. Permitted values: -\tADDED - MODIFIED -\tREMOVED\n", + "type": "string", + "enum": [ + "ADDED", + "MODIFIED", + "REMOVED" + ] }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "extCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } - } - } - }, - "changedInfo": { - "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package. * NOTE:\tIf present, this attribute (which depends on the value of the \"vnfdId\" attribute)\n was modified implicitly following a request to modify the \"vnfdId\" attribute, by\n copying the value of this attribute from the VNFD in the VNF Package identified\n by the \"vnfdId\" attribute.\n", - "type": "object", - "properties": { - "vnfInstanceName": { - "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\" as defined in clause 5.5.2.12..\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", as defined in clause 5.5.2.12..\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". See note.\n", - "type": "string" - }, - "vnfProductName": { - "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". See note.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfcInfoModifications": { - "description": "If present, this attribute signals modifications of certain entries in the \"vnfcInfo\" attribute array in the \"instantiatedVnfInfo\" attribute of \"VnfInstance\", as defined in clause 5.5.2.12.\n", + }, + "affectedVirtualStorages": { + "description": "Information about virtualised storage instances that were affected during the lifecycle operation. See note 1.\n", "type": "array", "items": { - "description": "This type represents modifications of an entry in an array of \"VnfcInfo\" objects. * NOTE:\tThe attribute \"id\" in this data type represents the same identifier as the attribute\n \"vnfcInstanceId\" in other related data types in the present document. For reasons of backward\n compatibility, this misalignment is not corrected.\n", - "type": "object", - "required": [ - "id", - "vnfcConfigurableProperties" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfcConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "changeType", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource or Storage MCIO that is used by a VNF instance. Information about the resource is available from the VIM or the CISM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } } - } - } - } - } - }, - "affectedVipCps": { - "description": "Information about virtual IP CP instances that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has made any changes to the Virtual IP CP instances of the VNF instance. Shall be absent otherwise. Only information about virtual IP CP instances that have been added, deleted or modified shall be provided.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified virtual IP CP instances.\n", - "type": "object", - "required": [ - "cpInstanceId", - "cpdId", - "changeType" - ], - "properties": { - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED -\tMODIFIED\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED" - ] - } - } - } - }, - "affectedVirtualCps": { - "description": "Information about virtual CP instances that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence.\nShall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has made any changes to the virtual CP instances of the VNF instance. Shall be absent otherwise. Only information about virtual CP instances that have been added, deleted or modified shall be provided.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified virtual CP instances.\n", - "type": "object", - "required": [ - "cpInstanceId", - "cpdId", - "changeType" - ], - "properties": { - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change.\nPermitted values:\n - ADDED\n - REMOVED\n - MODIFIED\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED" - ] } - } - } - }, - "affectedCertificates": { - "description": "Information about certificate content that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present when using delegation mode, otherwise shall be absent. This attribute shall be supported when delegation mode in certificate management is applicable\n", - "type": "array", - "items": { - "description": "This type provides input information about added, deleted, and modified certificate contents.\n", + }, + "changedInfo": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package. * NOTE:\tIf present, this attribute (which depends on the value of the \"vnfdId\" attribute)\n was modified implicitly following a request to modify the \"vnfdId\" attribute, by\n copying the value of this attribute from the VNFD in the VNF Package identified\n by the \"vnfdId\" attribute.\n", "type": "object", - "required": [ - "certificateInfoId", - "changeType" - ], "properties": { - "certificateInfoId": { - "description": "An identifier with the intention of being globally unique.\n", + "vnfInstanceName": { + "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\" as defined in clause 5.5.2.12..\n", "type": "string" }, - "certificateBaseProfileId": { - "description": "An identifier with the intention of being globally unique.\n", + "vnfInstanceDescription": { + "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", as defined in clause 5.5.2.12..\n", "type": "string" }, - "securityPolicyId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" }, - "cmfInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" }, - "certificateContentId": { + "vnfdId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "changeType": { - "description": "Signals the type of change.", - "type": "string", - "enum": [ - "ADD", - "REMOVE", - "MODIFY" - ] - } - } - } - }, - "changedExtConnectivity": { - "description": "Information about changed external connectivity, if this notification represents the result of a lifecycle operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\" and the \"operation\" has made any change of the external connectivity of the VNF instance. Shall be absent otherwise.\n", - "type": "array", - "items": { - "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", - "type": "object", - "required": [ - "id", - "resourceHandle", - "currentVnfExtCpData" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "vnfProvider": { + "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". See note.\n", + "type": "string" }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "vnfProductName": { + "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". See note.\n", + "type": "string" }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" + "vnfdVersion": { + "description": "A version.\n", + "type": "string" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "vnfcInfoModifications": { + "description": "If present, this attribute signals modifications of certain entries in the \"vnfcInfo\" attribute array in the \"instantiatedVnfInfo\" attribute of \"VnfInstance\", as defined in clause 5.5.2.12.\n", + "type": "array", + "items": { + "description": "This type represents modifications of an entry in an array of \"VnfcInfo\" objects. * NOTE:\tThe attribute \"id\" in this data type represents the same identifier as the attribute\n \"vnfcInstanceId\" in other related data types in the present document. For reasons of backward\n compatibility, this misalignment is not corrected.\n", + "type": "object", + "required": [ + "id", + "vnfcConfigurableProperties" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "affectedVipCps": { + "description": "Information about virtual IP CP instances that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has made any changes to the Virtual IP CP instances of the VNF instance. Shall be absent otherwise. Only information about virtual IP CP instances that have been added, deleted or modified shall be provided.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified virtual IP CP instances.\n", + "type": "object", + "required": [ + "cpInstanceId", + "cpdId", + "changeType" + ], + "properties": { + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "changeType": { + "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED -\tMODIFIED\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED" + ] } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", + } + }, + "affectedVirtualCps": { + "description": "Information about virtual CP instances that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence.\nShall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has made any changes to the virtual CP instances of the VNF instance. Shall be absent otherwise. Only information about virtual CP instances that have been added, deleted or modified shall be provided.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified virtual CP instances.\n", "type": "object", "required": [ - "id", - "resourceHandle" + "cpInstanceId", + "cpdId", + "changeType" ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "resourceProviderId": { + }, + "changeType": { + "description": "Signals the type of change.\nPermitted values:\n - ADDED\n - REMOVED\n - MODIFIED\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED" + ] + } + } + } + }, + "affectedCertificates": { + "description": "Information about certificate content that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present when using delegation mode, otherwise shall be absent. This attribute shall be supported when delegation mode in certificate management is applicable\n", + "type": "array", + "items": { + "description": "This type provides input information about added, deleted, and modified certificate contents.\n", + "type": "object", + "required": [ + "certificateInfoId", + "changeType" + ], + "properties": { + "certificateInfoId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + }, + "certificateBaseProfileId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + }, + "securityPolicyId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + }, + "cmfInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - } + }, + "changeType": { + "description": "Signals the type of change.", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "MODIFY" + ] } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "secondaryCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } } - } - }, - "currentVnfExtCpData": { - "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", - "type": "array", - "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + } + }, + "changedExtConnectivity": { + "description": "Information about changed external connectivity, if this notification represents the result of a lifecycle operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\" and the \"operation\" has made any change of the external connectivity of the VNF instance. Shall be absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", "type": "object", "required": [ - "cpdId" + "id", + "resourceHandle", + "currentVnfExtCpData" ], "properties": { - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", - "anyOf": [ - { - "required": [ - "linkPortId" - ] - }, - { - "required": [ - "cpProtocolData" - ] - }, - { - "required": [ - "netAttDefResourceId" - ] + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } } - ], - "type": "object", - "properties": { - "parentCpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "linkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "createExtLinkPort": { - "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", - "type": "boolean" - }, - "cpProtocolData": { - "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", - "type": "array", - "items": { - "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", "type": "object", "required": [ - "layerProtocol" + "id", + "resourceHandle" ], "properties": { - "layerProtocol": { - "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network itΓÇÖs connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", - "type": "string", - "enum": [ - "VLAN", - "INHERIT" - ] - }, - "segmentationId": { - "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "id": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "ipAddresses": { - "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "fixedAddresses": { - "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "numDynamicAddresses": { - "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "integer" + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" }, - "addressRange": { - "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } } - } }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" } - } } - } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "secondaryCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } - }, - "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" - } + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "anyOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + }, + { + "required": [ + "netAttDefResourceId" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "createExtLinkPort": { + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "type": "boolean" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", + "type": "array", + "items": { + "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationType": { + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network itΓÇÖs connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "type": "string", + "enum": [ + "VLAN", + "INHERIT" + ] + }, + "segmentationId": { + "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + } + } + } + } + }, + "extNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", + "type": "object", + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], + "properties": { + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "netAttDefResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "associatedExtCpId": { + "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } } - } } - } - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } } - } } - } } - } - }, - "extNetAttDefResource": { - "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", - "type": "array", - "items": { - "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", - "type": "object", - "required": [ - "netAttDefResourceInfoId", - "netAttDefResource" - ], - "properties": { - "netAttDefResourceInfoId": { + } + }, + "modificationsTriggeredByVnfPkgChange": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\nNOTE 1:\tThis attribute represents the delta (semantics as per IETF RFC 7396, JSON Merge Patch) between the value \n of the attribute at the start of the \"Change current VNF package\" operation and the value of the attribute \n at its completion.\nNOTE 2:\tIf present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly \n during the related operation and contains a copy of the value of the related attribute from the VNFD in the \n VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "object", + "properties": { + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vnfdId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "netAttDefResource": { - "required": [ - "resourceId" - ], + }, + "vnfProvider": { + "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". See note 2.\n", + "type": "string" + }, + "vnfProductName": { + "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". See note 2.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vimConnectionInfo": { + "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-relate dparameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM., CISM, CIR or MCIOP repository.\n", "type": "object", + "required": [ + "vimType" + ], "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "associatedExtCpId": { - "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "associatedVnfcCpId": { - "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" } - } } - } } - } - } - }, - "modificationsTriggeredByVnfPkgChange": { - "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\nNOTE 1:\tThis attribute represents the delta (semantics as per IETF RFC 7396, JSON Merge Patch) between the value \n of the attribute at the start of the \"Change current VNF package\" operation and the value of the attribute \n at its completion.\nNOTE 2:\tIf present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly \n during the related operation and contains a copy of the value of the related attribute from the VNFD in the \n VNF Package identified by the \"vnfdId\" attribute.\n", - "type": "object", - "properties": { - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". See note 2.\n", - "type": "string" - }, - "vnfProductName": { - "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". See note 2.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - }, - "vimConnectionInfo": { - "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", + }, + "error": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807, the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807.\n", "type": "object", - "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-relate dparameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM., CISM, CIR or MCIOP repository.\n", - "type": "object", - "required": [ - "vimType" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", - "type": "string" + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" } - } - } - } - } - }, - "error": { - "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807, the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807.\n", - "type": "object", - "required": [ - "status", - "detail" - ], - "properties": { - "type": { - "description": "A URI reference according to IETF RFC 3986 that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", - "type": "string", - "format": "URI" - }, - "title": { - "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", - "type": "string" - }, - "status": { - "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", - "type": "integer" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem.\n", - "type": "string" - }, - "instance": { - "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", - "type": "string", - "format": "URI" - } - } - }, - "_links": { - "description": "This type represents the links to resources that a notification can contain.\n", - "type": "object", - "required": [ - "vnfInstance", - "subscription" - ], - "properties": { - "vnfInstance": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "subscription": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } } - }, - "vnfLcmOpOcc": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + }, + "_links": { + "description": "This type represents the links to resources that a notification can contain.\n", "type": "object", "required": [ - "href" + "vnfInstance", + "subscription" ], "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + "vnfInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfLcmOpOcc": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } } - } } - } } - } \ No newline at end of file +} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json index 4c54facb..01d7ccd2 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json @@ -2,2615 +2,2615 @@ "description": "This type represents an individual VNF snapshot resource.\n", "type": "object", "required": [ - "id" + "id" ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfSnapshotPkgId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfSnapshot": { - "description": "This type represents a VNF snapshot.\n", - "type": "object", - "required": [ - "id", - "vnfInstanceId", - "creationStartedAt", - "vnfdId", - "vnfInstance", - "vnfcSnapshots" - ], - "properties": { - "id": { + "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "vnfInstanceId": { + }, + "vnfSnapshotPkgId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "creationStartedAt": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "creationFinishedAt": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstance": { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tVNF configurable properties are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + }, + "vnfSnapshot": { + "description": "This type represents a VNF snapshot.\n", "type": "object", "required": [ - "id", - "vnfdId", - "vnfProvider", - "vnfProductName", - "vnfSoftwareVersion", - "vnfdVersion", - "instantiationState", - "_links" + "id", + "vnfInstanceId", + "creationStartedAt", + "vnfdId", + "vnfInstance", + "vnfcSnapshots" ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstanceName": { - "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfProductName": { - "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "instantiationState": { - "description": "The instantiation state of the VNF.\n", - "type": "string", - "enum": [ - "NOT_INSTANTIATED", - "INSTANTIATED" - ] - }, - "instantiatedVnfInfo": { - "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", - "type": "object", - "required": [ - "flavourId", - "vnfState", - "extCpInfo" - ], - "properties": { - "flavourId": { - "description": "An identifier that is unique within a VNF descriptor.\n", + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "vnfState": { - "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", - "enum": [ - "STARTED", - "STOPPED" - ] - }, - "scaleStatus": { - "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", - "type": "array", - "items": { - "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", - "type": "object", - "required": [ - "aspectId", - "scaleLevel" - ], - "properties": { - "aspectId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstance": { + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tVNF configurable properties are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "instantiationState", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" + "vnfInstanceName": { + "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" }, - "scaleToLevel": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "maxScaleLevels": { - "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", - "type": "array", - "items": { - "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", - "type": "object", - "required": [ - "aspectId", - "scaleLevel" - ], - "properties": { - "aspectId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "scaleToLevel": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", - "type": "array", - "minItems": 1, - "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", - "type": "object", - "required": [ - "id", - "cpdId", - "cpConfigId", - "cpProtocolInfo" - ], - "oneOf": [ - { - "required": [ - "associatedVnfcCpId" - ] + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" }, - { - "required": [ - "associatedVipCpId" - ] + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" }, - { - "required": [ - "associatedVnfVirtualLinkId" - ] - } - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" + "vnfdVersion": { + "description": "A version.\n", + "type": "string" }, - "cpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "instantiationState": { + "description": "The instantiation state of the VNF.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", "type": "object", "required": [ - "layerProtocol" + "flavourId", + "vnfState", + "extCpInfo" ], "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "flavourId": { + "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + }, + "vnfState": { + "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", "type": "array", "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", + "type": "object", + "required": [ + "aspectId", + "scaleLevel" + ], + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "scaleToLevel": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" } - } } - } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } - } - } - } - } - }, - "extLinkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "associatedVnfcCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "associatedVipCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "associatedVirtualCpId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "associatedVnfVirtualLinkId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - } - }, - "vipCpInfo": { - "description": "VIP CPs that are part of the VNF instance. Shall be present when that particular VIP CP of the VNFC instance is associated to an external CP of the VNF instance.\nMay be present otherwise.\n", - "type": "array", - "items": { - "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the virtual IP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "cpInstanceId", - "cpdId" - ], - "properties": { - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for layer 3. There may be one cpProtocolInfo for layer 2.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", "type": "array", "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", + "type": "object", + "required": [ + "aspectId", + "scaleLevel" + ], + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "vnfdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "scaleToLevel": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" } - } } - } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } - } - } - } - } - }, - "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the virtual IP CP instance. See note.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "virtualCpInfo": { - "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", - "type": "array", - "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", - "type": "object", - "required": [ - "cpInstanceId", - "cpdId", - "resourceHandle", - "vduIds" - ], - "properties": { - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", "type": "array", + "minItems": 1, "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [ + { + "required": [ + "associatedVnfcCpId" + ] }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + { + "required": [ + "associatedVipCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "associatedVipCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "associatedVirtualCpId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" } - } } - } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } - } - } - } - } - }, - "vduIds": { - "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note.\n", - "type": "array", - "minItems": 1, - "items": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - } - }, - "additionalServiceInfo": { - "description": "Additional service identification information of the virtual CP instance.\n", - "type": "array", - "items": { - "description": "This type provides additional service information of the virtual CP instance used to expose properties of the virtual CP to NFV-MANO.\nNOTE: This attribute shall only be present if additional information is needed to identify the service \n termination within the VNF, such as for example a URL path information in an HTTP request required \n to allow a single virtual CP IP address to be used for several HTTP based services that use the \n same port number.\n", - "type": "object", - "required": [ - "portInfo" - ], - "properties": { - "portInfo": { - "description": "Service port numbers exposed by the virtual CP instance.\n", - "minItems": 1, - "type": "array", - "items": { - "description": "This type describes the service identifying port properties exposed by the virtual CP instance.\n", - "type": "object", - "required": [ - "name", - "port", - "portConfigurable" - ], - "properties": { - "name": { - "description": "The name of the port exposed by the virtual CP instance.\n", - "type": "string" - }, - "protocol": { - "description": "The L4 protocol for this port exposed by the virtual CP instance.\nPermitted values: - TCP - UDP - SCTP\n", - "type": "string", - "enum": [ - "TCP", - "UDP", - "SCTP" - ] - }, - "port": { - "description": "The L4 port number exposed by the virtual CP instance.\n", - "type": "integer" - }, - "portConfigurable": { - "description": "The Boolean is a data type having two values (true and false).\n", - "type": "boolean" + }, + "vipCpInfo": { + "description": "VIP CPs that are part of the VNF instance. Shall be present when that particular VIP CP of the VNFC instance is associated to an external CP of the VNF instance.\nMay be present otherwise.\n", + "type": "array", + "items": { + "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the virtual IP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "cpInstanceId", + "cpdId" + ], + "properties": { + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for layer 3. There may be one cpProtocolInfo for layer 2.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "associatedVnfcCpIds": { + "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the virtual IP CP instance. See note.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } } - } - } - }, - "serviceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "extVirtualLinkInfo": { - "description": "Information about the external VLs the VNF instance is connected to.\n", - "type": "array", - "items": { - "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", - "type": "object", - "required": [ - "id", - "resourceHandle", - "currentVnfExtCpData" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "virtualCpInfo": { + "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "type": "object", + "required": [ + "cpInstanceId", + "cpdId", + "resourceHandle", + "vduIds" + ], + "properties": { + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "vduIds": { + "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "additionalServiceInfo": { + "description": "Additional service identification information of the virtual CP instance.\n", + "type": "array", + "items": { + "description": "This type provides additional service information of the virtual CP instance used to expose properties of the virtual CP to NFV-MANO.\nNOTE: This attribute shall only be present if additional information is needed to identify the service \n termination within the VNF, such as for example a URL path information in an HTTP request required \n to allow a single virtual CP IP address to be used for several HTTP based services that use the \n same port number.\n", + "type": "object", + "required": [ + "portInfo" + ], + "properties": { + "portInfo": { + "description": "Service port numbers exposed by the virtual CP instance.\n", + "minItems": 1, + "type": "array", + "items": { + "description": "This type describes the service identifying port properties exposed by the virtual CP instance.\n", + "type": "object", + "required": [ + "name", + "port", + "portConfigurable" + ], + "properties": { + "name": { + "description": "The name of the port exposed by the virtual CP instance.\n", + "type": "string" + }, + "protocol": { + "description": "The L4 protocol for this port exposed by the virtual CP instance.\nPermitted values: - TCP - UDP - SCTP\n", + "type": "string", + "enum": [ + "TCP", + "UDP", + "SCTP" + ] + }, + "port": { + "description": "The L4 port number exposed by the virtual CP instance.\n", + "type": "integer" + }, + "portConfigurable": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + } + } + } + }, + "serviceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "secondaryCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "anyOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + }, + { + "required": [ + "netAttDefResourceId" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "createExtLinkPort": { + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a virtual IP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "type": "boolean" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", + "type": "array", + "items": { + "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet to assign to the external CP. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationType": { + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network itΓÇÖs connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "type": "string", + "enum": [ + "VLAN", + "INHERIT" + ] + }, + "segmentationId": { + "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + } + } + } + } + }, + "extNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", + "type": "object", + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], + "properties": { + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "netAttDefResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "associatedExtCpId": { + "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + } + } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "secondaryCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "currentVnfExtCpData": { - "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", - "type": "array", - "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", - "type": "object", - "required": [ - "cpdId" - ], - "properties": { - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", - "anyOf": [ - { - "required": [ - "linkPortId" - ] - }, - { - "required": [ - "cpProtocolData" - ] - }, - { - "required": [ - "netAttDefResourceId" - ] + }, + "extManagedVirtualLinkInfo": { + "description": "Information about the externally managed internal VLs of the VNF instance. See note 5 and note 6. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5). Even though externally-managed internal VLs are also used for VNF-internal connectivity, they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "type": "array", + "items": { + "description": "This type provides information about an externally-managed virtual link.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "vnfNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", + "type": "object", + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], + "properties": { + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "netAttDefResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "associatedExtCpId": { + "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + } + } } - ], - "type": "object", - "properties": { - "parentCpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "linkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "createExtLinkPort": { - "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a virtual IP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", - "type": "boolean" - }, - "cpProtocolData": { - "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", - "type": "array", - "items": { - "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", + }, + "monitoringParameters": { + "description": "Active monitoring parameters.\n", + "type": "array", + "items": { "type": "object", "required": [ - "layerProtocol" + "id", + "performanceMetric" ], "properties": { - "layerProtocol": { - "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet to assign to the external CP. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { + "required": [ + "resourceId" + ], "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance.\n", + "type": "array", + "items": { + "type": "object", "required": [ - "ipAddresses" - ] - } + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "parentCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "vnfVirtualLinkResourceInfo": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource", + "vnfLinkPorts" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", + "type": "object", "required": [ - "ipAddressRange" - ] - } + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "virtualStorageResourceInfo": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "required": [ + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network itΓÇÖs connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", - "type": "string", - "enum": [ - "VLAN", - "INHERIT" - ] - }, - "segmentationId": { - "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "vnfcInfo": { + "description": "Information about the VNFC instances.\n", + "type": "array", + "items": { + "description": "This type represents the information about a VNFC instance that is part of a VNF instance. * NOTE:\tThis allows to represent the error condition that a VNFC instance has lost its resources.\n", + "type": "object", + "required": [ + "id", + "vduId", + "vnfcState" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcState": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "mcioInfo": { + "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "type": "object", + "required": [ + "mcioId", + "mcioName", + "mcioNamespace", + "vduId", + "cismId", + "mcioType", + "desiredInstances", + "availableInstances" + ], + "properties": { + "mcioId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "mcioName": { + "description": "Human readable name of this MCIO. See note 4.\n", + "type": "string" + }, + "mcioNamespace": { + "description": "Namespace of this MCIO.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cismId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "ipAddresses": { - "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "fixedAddresses": { - "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "numDynamicAddresses": { - "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "integer" - }, - "addressRange": { - "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - } - } - }, - "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + }, + "mcioType": { + "description": "The type of MCIO. Specific values, their semantics and associated MCIO types are defined in clause 5.5.4.9. Additional values are also permitted. See note 1.\n", "type": "string", "enum": [ - "IPV4", - "IPV6" + "Deployment", + "StatefulSet" ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } + }, + "desiredInstances": { + "description": "Number of desired MCIO instances.\n", + "type": "integer" + }, + "availableInstances": { + "description": "Number of available MCIO instances.\n", + "type": "integer" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - } } - } - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } } - } } - } } - } }, - "extNetAttDefResource": { - "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", - "type": "array", - "items": { - "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "_links": { + "description": "Links to resources related to this resource.\n", "type": "object", "required": [ - "netAttDefResourceInfoId", - "netAttDefResource" + "self" ], "properties": { - "netAttDefResourceInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "netAttDefResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", + "required": [ + "href" + ], "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "indicators": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "instantiate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "terminate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scale": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scaleToLevel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeFlavour": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "heal": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "operate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeExtConn": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "createSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "revertToSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeCurrentVnfPkg": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "associatedExtCpId": { - "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "associatedVnfcCpId": { - "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" } - } } - } } - } } - }, - "extManagedVirtualLinkInfo": { - "description": "Information about the externally managed internal VLs of the VNF instance. See note 5 and note 6. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5). Even though externally-managed internal VLs are also used for VNF-internal connectivity, they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + }, + "vnfcSnapshots": { + "description": "Information about VNFC snapshots constituting this VNF snapshot.\n", "type": "array", "items": { - "description": "This type provides information about an externally-managed virtual link.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "description": "This type represents a VNFC snapshot. * NOTE 1:\tThe identifier of the compute snapshot resource is assigned during creation of a VNFC\n snapshot being returned from the VIM as output data in the response message of the individual\n resource operations. This attribute shall only be present for a VNFC snapshot that has been\n newly created by the VNFM as a result of the \"Create VNF snapshot task\".\n NOTE 2:\tThe identifier of the storage snapshot resource is assigned during creation of a VNFC snapshot\n being returned from the VIM as output data in the response message of the individual resource\n operations. This attribute shall only be present for a VNFC snapshot with an associated storage\n resource and that has been newly created by the VNFM as a result of the \"Create VNF snapshot task\".\n", + "type": "object", + "required": [ + "id", + "vnfcInstanceId", + "creationStartedAt", + "vnfcResourceInfoId" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" + "vnfcInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "vnfLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { + "vnfcResourceInfoId": { + "description": "This type represents the information about a VNFC instance that is part of a VNF instance. * NOTE:\tThis allows to represent the error condition that a VNFC instance has lost its resources.\n", + "type": "object", "required": [ - "resourceId" + "id", + "vduId", + "vnfcState" ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcState": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - }, - "additionalInfo": { + }, + "vnfcConfigurableProperties": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" - } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - }, - "vipCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "vnfNetAttDefResource": { - "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", - "type": "array", - "items": { - "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", - "type": "object", - "required": [ - "netAttDefResourceInfoId", - "netAttDefResource" - ], - "properties": { - "netAttDefResourceInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "netAttDefResource": { + }, + "computeSnapshotResource": { "required": [ - "resourceId" + "resourceId" ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "associatedExtCpId": { - "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "associatedVnfcCpId": { - "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - } - } - } - } - } - } - }, - "monitoringParameters": { - "description": "Active monitoring parameters.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "performanceMetric" - ], - "properties": { - "id": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "name": { - "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", - "type": "string" - }, - "performanceMetric": { - "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", - "type": "string" - } - } - } - }, - "localizationLanguage": { - "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", - "type": "string" - }, - "vnfcResourceInfo": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "All the CPs of the VNFC instance.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "cpdId" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "storageSnapshotResources": { + "description": "Mapping of the storage resources associated to the VNFC with the storage snapshot resources.\n", "type": "object", "required": [ - "layerProtocol" + "storageResourceId" ], "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "storageResourceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] + }, + "storageSnapshotResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } } - } }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" } - } } - } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } - } - } - } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "parentCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "vnfVirtualLinkResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource", - "vnfLinkPorts" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } - } }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - }, - "vipCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "virtualStorageResourceInfo":{ - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "storageResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { + "userDefinedData": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" - } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "vnfcInfo": { - "description": "Information about the VNFC instances.\n", - "type": "array", - "items": { - "description": "This type represents the information about a VNFC instance that is part of a VNF instance. * NOTE:\tThis allows to represent the error condition that a VNFC instance has lost its resources.\n", - "type": "object", - "required": [ - "id", - "vduId", - "vnfcState" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfcResourceInfoId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfcState": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfcConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "mcioInfo": { - "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", - "type": "array", - "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", - "type": "object", - "required": [ - "mcioId", - "mcioName", - "mcioNamespace", - "vduId", - "cismId", - "mcioType", - "desiredInstances", - "availableInstances" - ], - "properties": { - "mcioId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "mcioName": { - "description": "Human readable name of this MCIO. See note 4.\n", - "type": "string" - }, - "mcioNamespace": { - "description": "Namespace of this MCIO.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cismId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "mcioType": { - "description": "The type of MCIO. Specific values, their semantics and associated MCIO types are defined in clause 5.5.4.9. Additional values are also permitted. See note 1.\n", - "type": "string", - "enum": [ - "Deployment", - "StatefulSet" - ] - }, - "desiredInstances": { - "description": "Number of desired MCIO instances.\n", - "type": "integer" - }, - "availableInstances": { - "description": "Number of available MCIO instances.\n", - "type": "integer" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } - } } - } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": [ - "self" - ], - "properties": { - "self": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "indicators": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "instantiate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "terminate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "scale": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "scaleToLevel": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "changeFlavour": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "heal": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "operate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "changeExtConn": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "createSnapshot": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "revertToSnapshot": { + } + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", "required": [ - "href" + "href" ], "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } } - }, - "changeCurrentVnfPkg": { + }, + "takenFrom": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", "required": [ - "href" + "href" ], "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - } - } - } - } - }, - "vnfcSnapshots": { - "description": "Information about VNFC snapshots constituting this VNF snapshot.\n", - "type": "array", - "items": { - "description": "This type represents a VNFC snapshot. * NOTE 1:\tThe identifier of the compute snapshot resource is assigned during creation of a VNFC\n snapshot being returned from the VIM as output data in the response message of the individual\n resource operations. This attribute shall only be present for a VNFC snapshot that has been\n newly created by the VNFM as a result of the \"Create VNF snapshot task\".\n NOTE 2:\tThe identifier of the storage snapshot resource is assigned during creation of a VNFC snapshot\n being returned from the VIM as output data in the response message of the individual resource\n operations. This attribute shall only be present for a VNFC snapshot with an associated storage\n resource and that has been newly created by the VNFM as a result of the \"Create VNF snapshot task\".\n", - "type": "object", - "required": [ - "id", - "vnfcInstanceId", - "creationStartedAt", - "vnfcResourceInfoId" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "creationStartedAt": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "creationFinishedAt": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "vnfcResourceInfoId": { - "description": "This type represents the information about a VNFC instance that is part of a VNF instance. * NOTE:\tThis allows to represent the error condition that a VNFC instance has lost its resources.\n", - "type": "object", - "required": [ - "id", - "vduId", - "vnfcState" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfcResourceInfoId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfcState": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfcConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "computeSnapshotResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "storageSnapshotResources": { - "description": "Mapping of the storage resources associated to the VNFC with the storage snapshot resources.\n", - "type": "object", - "required": [ - "storageResourceId" - ], - "properties": { - "storageResourceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "storageSnapshotResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - } } - } - }, - "userDefinedData": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } - } - } - }, - "userDefinedData": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": [ - "self" - ], - "properties": { - "self": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "takenFrom": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } } - } } - } } - } \ No newline at end of file +} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index 3a760326..4d240264 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -1255,7 +1255,7 @@ } } }, - "currentVnfExtCpData": { + "currentVnfExtCpData": { "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { @@ -2278,7 +2278,7 @@ } } }, - "virtualStorageResourceInfo":{ + "virtualStorageResourceInfo": { "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index eb98e0ce..ad0c5a88 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -1257,7 +1257,7 @@ } } }, - "currentVnfExtCpData": { + "currentVnfExtCpData": { "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { @@ -2280,7 +2280,7 @@ } } }, - "virtualStorageResourceInfo":{ + "virtualStorageResourceInfo": { "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ -- GitLab From d0f3665895fd7ecb9ca20cd36f0670dbe3ca53de Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 17:32:07 +0500 Subject: [PATCH 022/141] update test cases of VNFLCM-API is per SOL 002 version 5.1.1 --- ...perationOccurrenceNotification.schema.json | 121 +- .../schemas/VnfSnapshotInfo.schema.json | 1832 +++++++++++------ .../schemas/VnfSnapshotsInfo.schema.json | 1832 +++++++++++------ .../schemas/subscription.schema.json | 7 +- .../schemas/subscriptions.schema.json | 7 +- .../schemas/vnfInstance.schema.json | 1344 +++++++----- .../schemas/vnfInstances.schema.json | 1344 +++++++----- .../schemas/vnfLcmOpOcc.schema.json | 115 +- .../schemas/vnfLcmOpOccs.schema.json | 115 +- 9 files changed, 4235 insertions(+), 2482 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index f65e7b43..ba97aba3 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF lifecycle management operation occurrence notification, which informs the receiver of changes in the VNF lifecycle caused by a VNF LCM operation occurrence. The support of the notification is mandatory. This notification shall be triggered by the VNFM when there is a change in the VNF lifecycle caused by a VNF LCM operation occurrence, including: * Instantiation of the VNF * Scaling of the VNF instance (including auto-scaling) * Healing of the VNF instance (including auto-healing) * Change of the state of the VNF instance (i.e. Operate VNF) * Change of the deployment flavour of the VNF instance * Change of the external connectivity of the VNF instance * Termination of the VNF instance * Modification of VNF instance information and/or VNF configurable\n properties through the \"PATCH\" method on the \"Individual VNF instance\"\n resource.\nIf this is the initial notification about the start of a VNF LCM operation occurrence, it is assumed that the notification is sent by the VNFM before any action (including sending the grant request) is taken as part of the LCM operation. Due to possible race conditions, the \"start\" notification, the grant request and the LCM operation acknowledgment can arrive in any order at the NFVO, and the NFVO shall be able to handle such a situation. If this is a notification about a final or intermediate result state of a VNF LCM operation occurrence, the notification shall be sent after all related actions of the LCM operation that led to this state have been executed. The new state shall be set in the \"Individual VNF LCM operation occurrence\" resource before the notification about the state change is sent. * NOTE 1:\tShall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set\n to \"FULL\" and the operation has performed any resource modification. Shall be absent otherwise.\n This attribute contains information about the cumulative changes to virtualised resources that\n were performed so far by the VNF LCM operation occurrence and by any of the error handling\n procedures for that operation occurrence.\n NOTE 2:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed\n for signalling the different types of changes, i.e. one per virtual link and change type.\n For instance, in the case of signalling affected VL instances involving the addition of a particular\n VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition of the VL by using\n the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\", and another\n \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the\n \"changeType\" equal to \"LINK_PORT_ADDED\".\n NOTE 3: Not more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present.\n", + "description": "This type represents a VNF lifecycle management operation occurrence notification, which informs the receiver of changes in the VNF lifecycle caused by a VNF LCM operation occurrence. The support of the notification is mandatory. This notification shall be triggered by the VNFM when there is a change in the VNF lifecycle caused by a VNF LCM operation occurrence, including: * Instantiation of the VNF * Scaling of the VNF instance (including auto-scaling) * Healing of the VNF instance (including auto-healing) * Change of the state of the VNF instance (i.e. Operate VNF) * Change of the deployment flavour of the VNF instance * Change of the external connectivity of the VNF instance * Selection of deployable modules of the VNF instance * Termination of the VNF instance * Modification of VNF instance information and/or VNF configurable\n properties through the \"PATCH\" method on the \"Individual VNF instance\"\n resource.\nIf this is the initial notification about the start of a VNF LCM operation occurrence, it is assumed that the notification is sent by the VNFM before any action (including sending the grant request) is taken as part of the LCM operation. Due to possible race conditions, the \"start\" notification, the grant request and the LCM operation acknowledgment can arrive in any order at the NFVO, and the NFVO shall be able to handle such a situation. If this is a notification about a final or intermediate result state of a VNF LCM operation occurrence, the notification shall be sent after all related actions of the LCM operation that led to this state have been executed. The new state shall be set in the \"Individual VNF LCM operation occurrence\" resource before the notification about the state change is sent. * NOTE 1:\tShall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set\n to \"FULL\" and the operation has performed any resource modification. Shall be absent otherwise.\n This attribute contains information about the cumulative changes to virtualised resources that\n were performed so far by the VNF LCM operation occurrence and by any of the error handling\n procedures for that operation occurrence.\n NOTE 2:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed\n for signalling the different types of changes, i.e. one per virtual link and change type.\n For instance, in the case of signaling affected VL instances involving the addition of a particular\n VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition of the VL by using\n the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\", and another\n \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the\n \"changeType\" equal to \"LINK_PORT_ADDED\".\n NOTE 3: Not more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present.\n", "type": "object", "required": [ "id", @@ -61,7 +61,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -75,7 +75,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] }, "isAutomaticInvocation": { @@ -249,7 +250,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Network MCIO that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -426,7 +427,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Storage MCIO that is used by a VNF instance. Information about the resource is available from the VIM or the CISM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -544,7 +545,7 @@ } }, "affectedVipCps": { - "description": "Information about virtual IP CP instances that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has made any changes to the Virtual IP CP instances of the VNF instance. Shall be absent otherwise. Only information about virtual IP CP instances that have been added, deleted or modified shall be provided.\n", + "description": "Information about virtual IP CP instances that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has made any changes to the VIP CP instances of the VNF instance. Shall be absent otherwise. Only information about VIP CP instances that have been added, deleted or modified shall be provided.\n", "type": "array", "items": { "description": "This type provides information about added, deleted and modified virtual IP CP instances.\n", @@ -616,10 +617,10 @@ } }, "affectedCertificates": { - "description": "Information about certificate content that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present when using delegation mode, otherwise shall be absent. This attribute shall be supported when delegation mode in certificate management is applicable\n", + "description": "Information about certificate content that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present when using delegation mode, otherwise shall be absent. This attribute shall be supported when delegation mode in certificate management is applicable.\n", "type": "array", "items": { - "description": "This type provides input information about added, deleted, and modified certificate contents.\n", + "description": "This type provides input information about added, deleted and modified certificate contents.\n", "type": "object", "required": [ "certificateInfoId", @@ -647,7 +648,7 @@ "type": "string" }, "changeType": { - "description": "Signals the type of change.", + "description": "Signals the type of change.\n", "type": "string", "enum": [ "ADD", @@ -802,7 +803,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for\n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only\n required to configure one \"cpConfig\" per \"cpdId\", not per VNFC instance. The case of using, for a scalable\n VDU, a cloud native template in the MCIOP that describes one single VNFC instance is not specified in the\n present document version.\n", "type": "object", "required": [ "cpdId" @@ -813,10 +814,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -881,23 +882,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -924,6 +908,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -976,7 +977,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the \n CIS cluster is set up to be able to configure an external load balancer. Otherwise, it shall be ignored.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP \n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for \n Kubernetes┬« that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time.\n", "type": "object", "required": [ "type" @@ -995,9 +996,34 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } } } } @@ -1137,39 +1163,6 @@ "vnfdVersion": { "description": "A version.\n", "type": "string" - }, - "vimConnectionInfo": { - "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-relate dparameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM., CISM, CIR or MCIOP repository.\n", - "type": "object", - "required": [ - "vimType" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", - "type": "string" - }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } } } }, diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json index 01d7ccd2..069853f9 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json @@ -19,9 +19,9 @@ "required": [ "id", "vnfInstanceId", - "creationStartedAt", + "triggeredAt", "vnfdId", - "vnfInstance", + "vnfInfo", "vnfcSnapshots" ], "properties": { @@ -48,7 +48,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tVNF configurable properties are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -97,6 +97,281 @@ "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" }, + "certificateInfo": { + "description": "This type provides input information related to certificate and certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateConfigurationInfo": { + "description": "This type provides input information related to certificate management.\n", + "type": "object", + "required": [ + "securityPolicy" + ], + "properties": { + "certificateBaseProfile": { + "description": "This type provides input information to override certificate base profile for certificate management\nNOTE : At least one overriding attributes shall be present, otherwise shall be absent.\n", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "issuer": { + "type": "string", + "description": "Issuer of certificates. See note." + }, + "issuerUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subject": { + "description": "This type provides input information related to subject of certificate.\n* NOTE: At least one overriding attributes shall be present, otherwise shall be absent.\n", + "type": "object", + "properties": { + "commonName": { + "description": "Information of certification target subject FQDN. See note.", + "type": "string" + }, + "organization": { + "description": "Information of certification target subject Organization. See note.", + "type": "string" + }, + "country": { + "description": "Information of certification target subject Country. See note.", + "type": "string" + }, + "state": { + "description": "Information of certification target subject State. See note.", + "type": "string" + }, + "locality": { + "description": "Information of certification target subject Locality. See note.", + "type": "string" + }, + "emailAddress": { + "description": "Information of certification contact email address. See note.", + "type": "string" + } + } + }, + "subjectUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "basicConstraints": { + "type": "string", + "description": "Basic constraints of certificates. See note.\n" + }, + "issuerAltName": { + "description": "Alternative name of issuer of certificates in this NS. See note.", + "type": "array", + "items": { + "type": "string" + } + }, + "subjectAltName": { + "description": "Alternative name of subject of certificates. Shall be present when this certificate is used for encrypted communication using IP address and subjectAltName attribute of CertificateBaseProfile in CertificateDesc of VNFD is empty (see ETSI GS NFV-IFA 011 [7],clause 7.1.19.4). See note", + "type": "array", + "items": { + "type": "string" + } + }, + "nameConstraints": { + "description": "Name constraints of certificates. See note.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "securityPolicy": { + "description": "Information for security policy to be satisfied for certificate.\n", + "type": "array", + "items": { + "description": "This type provides input information related to security policy for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "maxValidityPeriod": { + "description": "Allowed max validity period for certificates.", + "type": "integer" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.", + "type": "string" + }, + "minimumKeyLength": { + "description": "Minimum key length for certificates.", + "type": "integer" + } + } + } + }, + "delegationSupportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "cmfInfo": { + "description": "This type provides input information related to CMF for certificate management.\n", + "type": "object", + "required": [ + "id", + "endPoint", + "supportedProtocol" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "endPoint": { + "description": "End point of CMF instance.", + "type": "object", + "required": [ + "ipAddress", + "link" + ], + "properties": { + "ipAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "link": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + }, + "supportedProtocols": { + "description": "Supported protocol by CMF instance.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "CMP", + "CMPv2", + "EST", + "SCEP" + ] + } + }, + "certificateChain": { + "description": "Certificate chain that this CMF provides.", + "type": "array", + "items": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "certificateContents": { + "description": "Information for contents of issued certificates. The information contained in this attribute may be updated over time during the VNF LCM, e.g. certificate(s) renewal.\n", + "type": "array", + "items": { + "description": "This type provides input information related to certificate content.\n", + "type": "object", + "required": [ + "id", + "certificateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certficateDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "certificateType": { + "description": "Type of this certificate.", + "type": "string", + "enum": [ + "VNFCI_CERT", + "VNFOAM_CERT" + ] + }, + "supportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "version": { + "description": "A version.\n", + "type": "string" + }, + "serialNumber": { + "description": "Serial number of this certificate.", + "type": "integer" + }, + "signatureAlgorithm": { + "description": "Algorithm of this certificate's signature.", + "type": "string" + }, + "issuer": { + "description": "Issuer of this certificate.", + "type": "string" + }, + "notBefore": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notAfter": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "subject": { + "description": "Subject of this certificate.", + "type": "string" + }, + "publicKeyAlgorithm": { + "description": "Algorithm of this certificate's public key.", + "type": "string" + }, + "publicKey": { + "description": "Public key of this certificate.", + "type": "string" + }, + "certificateExtensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, "instantiationState": { "description": "The instantiation state of the VNF.\n", "type": "string", @@ -127,7 +402,7 @@ ] }, "scaleStatus": { - "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling. For an aspect that has not been deployed because the related deployableModule has not been selected, it indicates the scale level that has been requested in the instantiation or in a scaling operation, or, if none has been requested in any of them, the scale level applicable to the aspect based on the default instantiation level. See note 8.\n", "type": "array", "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", @@ -142,12 +417,12 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } @@ -168,116 +443,335 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } }, - "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "selectedDeployableModule": { + "description": "References a currently selected deployable module, as defined in the VNFD, that has already completed the instantiation of its VNFCs\n", "type": "array", - "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", "type": "object", "required": [ - "id", - "cpdId", - "cpConfigId", - "cpProtocolInfo" + "type" ], - "oneOf": [ - { - "required": [ - "associatedVnfcCpId" - ] - }, - { - "required": [ - "associatedVipCpId" - ] + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes. The tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request. At most one tag can be included when the data type is used in a VNF LCM operation request. When the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } }, - { - "required": [ - "associatedVnfVirtualLinkId" + "type": { + "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" ] - } - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" }, - "cpdId": { + "vduId": { "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, - "cpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute ΓÇÿtypeΓÇÖ indicates OSCONTAINER and absent otherwise.", "type": "array", "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", "type": "object", "required": [ - "layerProtocol" + "resourceTemplateId" ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" + "oneOf": [ + { + "required": [ + "resourceTemplateId" ] }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource.See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note. \n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resources_property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "resourceTemplateId" + ] + }, + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD for this virtual compute descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource. \n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk. See note 7.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [ + { + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVipCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", "type": "string" }, "ipAddresses": { @@ -288,6 +782,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -360,7 +866,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -399,6 +905,10 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -407,7 +917,7 @@ "description": "VIP CPs that are part of the VNF instance. Shall be present when that particular VIP CP of the VNFC instance is associated to an external CP of the VNF instance.\nMay be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the virtual IP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ "cpInstanceId", @@ -463,18 +973,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -493,6 +991,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -565,7 +1075,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -574,7 +1084,7 @@ } }, "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the virtual IP CP instance. See note.\n", + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -596,7 +1106,7 @@ "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\n* NOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n* NOTE 2: The information can be omitted because it is already available as part of the external CP information in the\n VnfExtCpInfo structure.\n", "type": "object", "required": [ "cpInstanceId", @@ -665,7 +1175,7 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", "type": "array", "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", @@ -697,18 +1207,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -727,6 +1225,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -799,7 +1309,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -1021,7 +1531,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for\n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only\n required to configure one \"cpConfig\" per \"cpdId\", not per VNFC instance. The case of using, for a scalable\n VDU, a cloud native template in the MCIOP that describes one single VNFC instance is not specified in the\n present document version.\n", "type": "object", "required": [ "cpdId" @@ -1032,10 +1542,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1064,7 +1574,7 @@ "type": "string" }, "createExtLinkPort": { - "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a virtual IP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", "type": "boolean" }, "cpProtocolData": { @@ -1086,7 +1596,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet to assign to the external CP. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1100,23 +1610,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1143,6 +1636,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1195,7 +1705,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the \n CIS cluster is set up to be able to configure an external load balancer. Otherwise, it shall be ignored.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP \n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for \n Kubernetes┬« that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time.\n", "type": "object", "required": [ "type" @@ -1214,12 +1724,37 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" - } - } - } + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + } + } } } }, @@ -1595,518 +2130,538 @@ "type": "string" }, "vnfcResourceInfo": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. * NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "All the CPs of the VNFC instance.\n", - "type": "array", - "items": { - "type": "object", + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { "required": [ - "id", - "cpdId" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", - "type": "array", - "items": { - "type": "object", + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. See note 7.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" } } } } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } } } } } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "parentCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", - "type": "array", - "items": { + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "parentCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "certificateContentId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } }, "vnfVirtualLinkResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource", - "vnfLinkPorts" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "description": "Information about the virtualised network resources used by the VLs of the VNF instance. See note 6. Even though externally-managed internal VLs are also used for VNF-internal connectivity, they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource", + "vnfLinkPorts" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", + "required": [ + "id", + "resourceHandle" + ], "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", - "type": "object", + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { "required": [ - "id", - "resourceHandle" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceHandle": { - "required": [ - "resourceId" - ], + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - }, - "vipCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "virtualStorageResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "storageResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } }, @@ -2146,10 +2701,10 @@ } }, "mcioInfo": { - "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", + "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", @@ -2187,7 +2742,8 @@ "type": "string", "enum": [ "Deployment", - "StatefulSet" + "StatefulSet", + "DaemonSet" ] }, "desiredInstances": { @@ -2198,6 +2754,76 @@ "description": "Number of available MCIO instances.\n", "type": "integer" }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "vnfPaasServiceInfo": { + "description": "Information on the PaaS Services assigned and used by the VNF instance.\n", + "type": "array", + "items": { + "description": "This type provides information about a PaaS Service that is used by a VNF instance. The PaasServiceInfo is comprised of various sets of information. Some information comes from the VNFD, other information comes from the PaaS Service assets provided by the NFVO to the VNFM, and other information is provided at runtime information about the usage of the PaaS Service.\n", + "type": "object", + "required": [ + "id", + "paasServiceId", + "paasServiceType", + "paasServiceRequestId", + "paasServiceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceType": { + "description": "The type of PaaS Service. The value of this attribute is expected to be matched against values of the registered PaaS Services in the PSR.\n", + "type": "string" + }, + "paasServiceVersion": { + "description": "A version.\n", + "type": "string" + }, + "paasServiceRequestId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "paasServiceHandle": { + "description": "This type provides information enabling the access and use of the PaaS Service by the VNF instance. The type and format of the handle depends on the form that the PaaS Service is formed.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, "additionalInfo": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json index 41c57dc7..85e04634 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json @@ -21,9 +21,9 @@ "required": [ "id", "vnfInstanceId", - "creationStartedAt", + "triggeredAt", "vnfdId", - "vnfInstance", + "vnfInfo", "vnfcSnapshots" ], "properties": { @@ -50,7 +50,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tVNF configurable properties are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -99,6 +99,281 @@ "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" }, + "certificateInfo": { + "description": "This type provides input information related to certificate and certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateConfigurationInfo": { + "description": "This type provides input information related to certificate management.\n", + "type": "object", + "required": [ + "securityPolicy" + ], + "properties": { + "certificateBaseProfile": { + "description": "This type provides input information to override certificate base profile for certificate management\nNOTE : At least one overriding attributes shall be present, otherwise shall be absent.\n", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "issuer": { + "type": "string", + "description": "Issuer of certificates. See note." + }, + "issuerUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subject": { + "description": "This type provides input information related to subject of certificate.\n* NOTE: At least one overriding attributes shall be present, otherwise shall be absent.\n", + "type": "object", + "properties": { + "commonName": { + "description": "Information of certification target subject FQDN. See note.", + "type": "string" + }, + "organization": { + "description": "Information of certification target subject Organization. See note.", + "type": "string" + }, + "country": { + "description": "Information of certification target subject Country. See note.", + "type": "string" + }, + "state": { + "description": "Information of certification target subject State. See note.", + "type": "string" + }, + "locality": { + "description": "Information of certification target subject Locality. See note.", + "type": "string" + }, + "emailAddress": { + "description": "Information of certification contact email address. See note.", + "type": "string" + } + } + }, + "subjectUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "basicConstraints": { + "type": "string", + "description": "Basic constraints of certificates. See note.\n" + }, + "issuerAltName": { + "description": "Alternative name of issuer of certificates in this NS. See note.", + "type": "array", + "items": { + "type": "string" + } + }, + "subjectAltName": { + "description": "Alternative name of subject of certificates. Shall be present when this certificate is used for encrypted communication using IP address and subjectAltName attribute of CertificateBaseProfile in CertificateDesc of VNFD is empty (see ETSI GS NFV-IFA 011 [7],clause 7.1.19.4). See note", + "type": "array", + "items": { + "type": "string" + } + }, + "nameConstraints": { + "description": "Name constraints of certificates. See note.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "securityPolicy": { + "description": "Information for security policy to be satisfied for certificate.\n", + "type": "array", + "items": { + "description": "This type provides input information related to security policy for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "maxValidityPeriod": { + "description": "Allowed max validity period for certificates.", + "type": "integer" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.", + "type": "string" + }, + "minimumKeyLength": { + "description": "Minimum key length for certificates.", + "type": "integer" + } + } + } + }, + "delegationSupportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "cmfInfo": { + "description": "This type provides input information related to CMF for certificate management.\n", + "type": "object", + "required": [ + "id", + "endPoint", + "supportedProtocol" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "endPoint": { + "description": "End point of CMF instance.", + "type": "object", + "required": [ + "ipAddress", + "link" + ], + "properties": { + "ipAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "link": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + }, + "supportedProtocols": { + "description": "Supported protocol by CMF instance.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "CMP", + "CMPv2", + "EST", + "SCEP" + ] + } + }, + "certificateChain": { + "description": "Certificate chain that this CMF provides.", + "type": "array", + "items": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "certificateContents": { + "description": "Information for contents of issued certificates. The information contained in this attribute may be updated over time during the VNF LCM, e.g. certificate(s) renewal.\n", + "type": "array", + "items": { + "description": "This type provides input information related to certificate content.\n", + "type": "object", + "required": [ + "id", + "certificateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certficateDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "certificateType": { + "description": "Type of this certificate.", + "type": "string", + "enum": [ + "VNFCI_CERT", + "VNFOAM_CERT" + ] + }, + "supportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "version": { + "description": "A version.\n", + "type": "string" + }, + "serialNumber": { + "description": "Serial number of this certificate.", + "type": "integer" + }, + "signatureAlgorithm": { + "description": "Algorithm of this certificate's signature.", + "type": "string" + }, + "issuer": { + "description": "Issuer of this certificate.", + "type": "string" + }, + "notBefore": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notAfter": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "subject": { + "description": "Subject of this certificate.", + "type": "string" + }, + "publicKeyAlgorithm": { + "description": "Algorithm of this certificate's public key.", + "type": "string" + }, + "publicKey": { + "description": "Public key of this certificate.", + "type": "string" + }, + "certificateExtensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, "instantiationState": { "description": "The instantiation state of the VNF.\n", "type": "string", @@ -129,7 +404,7 @@ ] }, "scaleStatus": { - "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling. For an aspect that has not been deployed because the related deployableModule has not been selected, it indicates the scale level that has been requested in the instantiation or in a scaling operation, or, if none has been requested in any of them, the scale level applicable to the aspect based on the default instantiation level. See note 8.\n", "type": "array", "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", @@ -144,12 +419,12 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } @@ -170,116 +445,335 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } }, - "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "selectedDeployableModule": { + "description": "References a currently selected deployable module, as defined in the VNFD, that has already completed the instantiation of its VNFCs\n", "type": "array", - "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", "type": "object", "required": [ - "id", - "cpdId", - "cpConfigId", - "cpProtocolInfo" + "type" ], - "oneOf": [ - { - "required": [ - "associatedVnfcCpId" - ] - }, - { - "required": [ - "associatedVipCpId" - ] + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes. The tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request. At most one tag can be included when the data type is used in a VNF LCM operation request. When the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } }, - { - "required": [ - "associatedVnfVirtualLinkId" + "type": { + "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" ] - } - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" }, - "cpdId": { + "vduId": { "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, - "cpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute ΓÇÿtypeΓÇÖ indicates OSCONTAINER and absent otherwise.", "type": "array", "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", "type": "object", "required": [ - "layerProtocol" + "resourceTemplateId" ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" + "oneOf": [ + { + "required": [ + "resourceTemplateId" ] }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource.See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note. \n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resources_property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "resourceTemplateId" + ] + }, + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD for this virtual compute descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource. \n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk. See note 7.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [ + { + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVipCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", "type": "string" }, "ipAddresses": { @@ -290,6 +784,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -362,7 +868,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -401,6 +907,10 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -409,7 +919,7 @@ "description": "VIP CPs that are part of the VNF instance. Shall be present when that particular VIP CP of the VNFC instance is associated to an external CP of the VNF instance.\nMay be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the virtual IP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ "cpInstanceId", @@ -465,18 +975,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -495,6 +993,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -567,7 +1077,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -576,7 +1086,7 @@ } }, "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the virtual IP CP instance. See note.\n", + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -598,7 +1108,7 @@ "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\n* NOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n* NOTE 2: The information can be omitted because it is already available as part of the external CP information in the\n VnfExtCpInfo structure.\n", "type": "object", "required": [ "cpInstanceId", @@ -667,7 +1177,7 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", "type": "array", "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", @@ -699,18 +1209,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -729,6 +1227,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -801,7 +1311,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -1023,7 +1533,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for\n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only\n required to configure one \"cpConfig\" per \"cpdId\", not per VNFC instance. The case of using, for a scalable\n VDU, a cloud native template in the MCIOP that describes one single VNFC instance is not specified in the\n present document version.\n", "type": "object", "required": [ "cpdId" @@ -1034,10 +1544,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1066,7 +1576,7 @@ "type": "string" }, "createExtLinkPort": { - "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a virtual IP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", "type": "boolean" }, "cpProtocolData": { @@ -1088,7 +1598,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet to assign to the external CP. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1102,23 +1612,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1145,6 +1638,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1197,7 +1707,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the \n CIS cluster is set up to be able to configure an external load balancer. Otherwise, it shall be ignored.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP \n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for \n Kubernetes┬« that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time.\n", "type": "object", "required": [ "type" @@ -1216,12 +1726,37 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" - } - } - } + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + } + } } } }, @@ -1597,518 +2132,538 @@ "type": "string" }, "vnfcResourceInfo": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. * NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "All the CPs of the VNFC instance.\n", - "type": "array", - "items": { - "type": "object", + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { "required": [ - "id", - "cpdId" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", - "type": "array", - "items": { - "type": "object", + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. See note 7.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" } } } } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } } } } } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "parentCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", - "type": "array", - "items": { + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "parentCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "certificateContentId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } }, "vnfVirtualLinkResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource", - "vnfLinkPorts" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "description": "Information about the virtualised network resources used by the VLs of the VNF instance. See note 6. Even though externally-managed internal VLs are also used for VNF-internal connectivity, they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource", + "vnfLinkPorts" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", + "required": [ + "id", + "resourceHandle" + ], "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", - "type": "object", + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { "required": [ - "id", - "resourceHandle" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceHandle": { - "required": [ - "resourceId" - ], + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - }, - "vipCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "virtualStorageResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "storageResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } }, @@ -2148,10 +2703,10 @@ } }, "mcioInfo": { - "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", + "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", @@ -2189,7 +2744,8 @@ "type": "string", "enum": [ "Deployment", - "StatefulSet" + "StatefulSet", + "DaemonSet" ] }, "desiredInstances": { @@ -2200,6 +2756,76 @@ "description": "Number of available MCIO instances.\n", "type": "integer" }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "vnfPaasServiceInfo": { + "description": "Information on the PaaS Services assigned and used by the VNF instance.\n", + "type": "array", + "items": { + "description": "This type provides information about a PaaS Service that is used by a VNF instance. The PaasServiceInfo is comprised of various sets of information. Some information comes from the VNFD, other information comes from the PaaS Service assets provided by the NFVO to the VNFM, and other information is provided at runtime information about the usage of the PaaS Service.\n", + "type": "object", + "required": [ + "id", + "paasServiceId", + "paasServiceType", + "paasServiceRequestId", + "paasServiceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceType": { + "description": "The type of PaaS Service. The value of this attribute is expected to be matched against values of the registered PaaS Services in the PSR.\n", + "type": "string" + }, + "paasServiceVersion": { + "description": "A version.\n", + "type": "string" + }, + "paasServiceRequestId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "paasServiceHandle": { + "description": "This type provides information enabling the access and use of the PaaS Service by the VNF instance. The type and format of the handle depends on the form that the PaaS Service is formed.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, "additionalInfo": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" diff --git a/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json index bd91d402..82649409 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json @@ -24,7 +24,7 @@ "oneOf": [ { "required": [ - "vnfdId" + "vnfdIds" ] }, { @@ -147,7 +147,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -161,7 +161,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] } }, diff --git a/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json index ece4d04c..746d754e 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json @@ -26,7 +26,7 @@ "oneOf": [ { "required": [ - "vnfdId" + "vnfdIds" ] }, { @@ -149,7 +149,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -163,7 +163,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] } }, diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index 4d240264..8cff67c8 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7:\tSubports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8:\tFor a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatus\" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -368,12 +368,12 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } @@ -394,12 +394,12 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } @@ -412,8 +412,231 @@ "type": "string" } }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes. The tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request. At most one tag can be included when the data type is used in a VNF LCM operation request. When the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "type": { + "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" + ] + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute ΓÇÿtypeΓÇÖ indicates OSCONTAINER and absent otherwise.", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "resourceTemplateId" + ] + }, + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource.See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note. \n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resources_property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "resourceTemplateId" + ] + }, + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD for this virtual compute descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource. \n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk. See note 7.\n", "type": "array", "minItems": 1, "items": { @@ -492,18 +715,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -522,6 +733,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -594,7 +817,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -645,7 +868,7 @@ "description": "VIP CPs that are part of the VNF instance. Shall be present when that particular VIP CP of the VNFC instance is associated to an external CP of the VNF instance.\nMay be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the virtual IP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ "cpInstanceId", @@ -701,18 +924,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -731,6 +942,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -803,7 +1026,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -812,7 +1035,7 @@ } }, "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the virtual IP CP instance. See note.\n", + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -834,7 +1057,7 @@ "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\n* NOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n* NOTE 2: The information can be omitted because it is already available as part of the external CP information in the\n VnfExtCpInfo structure.\n", "type": "object", "required": [ "cpInstanceId", @@ -903,7 +1126,7 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", "type": "array", "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", @@ -935,18 +1158,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -965,6 +1176,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1037,7 +1260,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -1259,7 +1482,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for\n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only\n required to configure one \"cpConfig\" per \"cpdId\", not per VNFC instance. The case of using, for a scalable\n VDU, a cloud native template in the MCIOP that describes one single VNFC instance is not specified in the\n present document version.\n", "type": "object", "required": [ "cpdId" @@ -1270,10 +1493,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1302,7 +1525,7 @@ "type": "string" }, "createExtLinkPort": { - "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a virtual IP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", "type": "boolean" }, "cpProtocolData": { @@ -1324,7 +1547,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet to assign to the external CP. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1338,23 +1561,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1381,6 +1587,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1433,7 +1656,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the \n CIS cluster is set up to be able to configure an external load balancer. Otherwise, it shall be ignored.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP \n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for \n Kubernetes┬« that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time.\n", "type": "object", "required": [ "type" @@ -1452,9 +1675,34 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } } } } @@ -1833,526 +2081,538 @@ "type": "string" }, "vnfcResourceInfo": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. * NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "All the CPs of the VNFC instance.\n", - "type": "array", - "items": { - "type": "object", + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { "required": [ - "id", - "cpdId" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", - "type": "array", - "items": { - "type": "object", + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. See note 7.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" } } } } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "parentCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "vnfVirtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance. See note 6. Even though externally-managed internal VLs are also used for VNF-internal connectivity, they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource", + "vnfLinkPorts" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "required": [ - "type" - ], "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" } } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "parentCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "certificateContentId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "certificateContentId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - }, - "vnfVirtualLinkResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource", - "vnfLinkPorts" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", - "type": "object", + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { "required": [ - "id", - "resourceHandle" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceHandle": { - "required": [ - "resourceId" - ], + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - }, - "vipCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "virtualStorageResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "storageResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } }, @@ -2392,10 +2652,10 @@ } }, "mcioInfo": { - "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", + "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index ad0c5a88..f37aa985 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -1,7 +1,7 @@ { "type": "array", "items": { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7:\tSubports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8:\tFor a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatus\" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -370,12 +370,12 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } @@ -396,12 +396,12 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } @@ -414,8 +414,231 @@ "type": "string" } }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes. The tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request. At most one tag can be included when the data type is used in a VNF LCM operation request. When the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "type": { + "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" + ] + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute ΓÇÿtypeΓÇÖ indicates OSCONTAINER and absent otherwise.", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "resourceTemplateId" + ] + }, + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource.See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note. \n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resources_property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "resourceTemplateId" + ] + }, + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD for this virtual compute descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource. \n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk. See note 7.\n", "type": "array", "minItems": 1, "items": { @@ -494,18 +717,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -524,6 +735,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -596,7 +819,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -647,7 +870,7 @@ "description": "VIP CPs that are part of the VNF instance. Shall be present when that particular VIP CP of the VNFC instance is associated to an external CP of the VNF instance.\nMay be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the virtual IP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ "cpInstanceId", @@ -703,18 +926,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -733,6 +944,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -805,7 +1028,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -814,7 +1037,7 @@ } }, "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the virtual IP CP instance. See note.\n", + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -836,7 +1059,7 @@ "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\n* NOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n* NOTE 2: The information can be omitted because it is already available as part of the external CP information in the\n VnfExtCpInfo structure.\n", "type": "object", "required": [ "cpInstanceId", @@ -905,7 +1128,7 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", "type": "array", "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", @@ -937,18 +1160,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -967,6 +1178,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1039,7 +1262,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -1261,7 +1484,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for\n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only\n required to configure one \"cpConfig\" per \"cpdId\", not per VNFC instance. The case of using, for a scalable\n VDU, a cloud native template in the MCIOP that describes one single VNFC instance is not specified in the\n present document version.\n", "type": "object", "required": [ "cpdId" @@ -1272,10 +1495,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1304,7 +1527,7 @@ "type": "string" }, "createExtLinkPort": { - "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a virtual IP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", "type": "boolean" }, "cpProtocolData": { @@ -1326,7 +1549,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet to assign to the external CP. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1340,23 +1563,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1383,6 +1589,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1435,7 +1658,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the \n CIS cluster is set up to be able to configure an external load balancer. Otherwise, it shall be ignored.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP \n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for \n Kubernetes┬« that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time.\n", "type": "object", "required": [ "type" @@ -1454,9 +1677,34 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } } } } @@ -1835,526 +2083,538 @@ "type": "string" }, "vnfcResourceInfo": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. * NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "All the CPs of the VNFC instance.\n", - "type": "array", - "items": { - "type": "object", + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { "required": [ - "id", - "cpdId" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", - "type": "array", - "items": { - "type": "object", + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. See note 7.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" } } } } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "parentCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "vnfVirtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance. See note 6. Even though externally-managed internal VLs are also used for VNF-internal connectivity, they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource", + "vnfLinkPorts" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "required": [ - "type" - ], "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" } } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "parentCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "certificateContentId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "certificateContentId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - }, - "vnfVirtualLinkResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource", - "vnfLinkPorts" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", - "type": "object", + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { "required": [ - "id", - "resourceHandle" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceHandle": { - "required": [ - "resourceId" - ], + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - }, - "vipCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "virtualStorageResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "storageResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } }, @@ -2394,10 +2654,10 @@ } }, "mcioInfo": { - "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", + "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json index 6601f1e5..2ca32506 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists. * NOTE 1:\tThis allows the API consumer to obtain the information contained in the latest \"result\"\n notification if it has not received it due to an error or a wrongly configured subscription filter.\n* NOTE 2:\tNot more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present. * NOTE 3:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed\n for signalling the different types of changes, i.e. one per virtual link and change type.\n For instance, in the case of signalling affected VL instances involving the addition of a\n particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition\n of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\",\n and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the\n \"changeType\" equal to \"LINK_PORT_ADDED\".\n* NOTE 4:\tA coordination action has timed out if the VNFM has not been able to read the\n \"Individual coordination action\" resource within a timeout interval after requesting the coordination\n to be started or to be cancelled. The length of the timeout interval is defined by means outside\n the scope of the present document.\n* NOTE 5: The list of rejected coordinations may be garbage collected if the LCM operation occurrence has\n reached a terminal state, i.e. one of \"COMPLETED\", \"FAILED\" and \"ROLLED_BACK\".\n", + "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists. * NOTE 1:\tThis allows the API consumer to obtain the information contained in the latest \"result\"\n notification if it has not received it due to an error or a wrongly configured subscription filter.\n* NOTE 2:\tNot more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present. * NOTE 3:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed\n for signalling the different types of changes, i.e. one per virtual link and change type.\n For instance, in the case of signaling affected VL instances involving the addition of a\n particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition\n of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\",\n and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the\n \"changeType\" equal to \"LINK_PORT_ADDED\".\n* NOTE 4:\tA coordination action has timed out if the VNFM has not been able to read the\n \"Individual coordination action\" resource within a timeout interval after requesting the coordination\n to be started or to be cancelled. The length of the timeout interval is defined by means outside\n the scope of the present document.\n* NOTE 5: The list of rejected coordinations may be garbage collected if the LCM operation occurrence has\n reached a terminal state, i.e. one of \"COMPLETED\", \"FAILED\" and \"ROLLED_BACK\".\n", "type": "object", "oneOf": [ { @@ -61,7 +61,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -75,7 +75,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] }, "isAutomaticInvocation": { @@ -83,7 +84,7 @@ "type": "boolean" }, "operationParams": { - "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n", + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModificationRequest * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest * SELECT_DEPL_MODS: SelectVnfDeployableModulesRequest\n", "type": "object" }, "isCancelPending": { @@ -289,7 +290,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Network MCIO that is used by a VNF instance. Information about the resource is available from the VIM or the CISM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -466,7 +467,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Storage MCIO that is used by a VNF instance. Information about the resource is available from the VIM or the CISM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -765,7 +766,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for\n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only\n required to configure one \"cpConfig\" per \"cpdId\", not per VNFC instance. The case of using, for a scalable\n VDU, a cloud native template in the MCIOP that describes one single VNFC instance is not specified in the\n present document version.\n", "type": "object", "required": [ "cpdId" @@ -776,10 +777,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -844,23 +845,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -887,6 +871,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -939,7 +940,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the \n CIS cluster is set up to be able to configure an external load balancer. Otherwise, it shall be ignored.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP \n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for \n Kubernetes┬« that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time.\n", "type": "object", "required": [ "type" @@ -958,9 +959,34 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } } } } @@ -1100,39 +1126,6 @@ "vnfdVersion": { "description": "A version.\n", "type": "string" - }, - "vimConnectionInfo": { - "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-relate dparameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM., CISM, CIR or MCIOP repository.\n", - "type": "object", - "required": [ - "vimType" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", - "type": "string" - }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } } } }, diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json index 2cdb3d91..4c35d74e 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json @@ -1,7 +1,7 @@ { "type": "array", "items": { - "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists. * NOTE 1:\tThis allows the API consumer to obtain the information contained in the latest \"result\"\n notification if it has not received it due to an error or a wrongly configured subscription filter.\n* NOTE 2:\tNot more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present. * NOTE 3:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed\n for signalling the different types of changes, i.e. one per virtual link and change type.\n For instance, in the case of signalling affected VL instances involving the addition of a\n particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition\n of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\",\n and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the\n \"changeType\" equal to \"LINK_PORT_ADDED\".\n* NOTE 4:\tA coordination action has timed out if the VNFM has not been able to read the\n \"Individual coordination action\" resource within a timeout interval after requesting the coordination\n to be started or to be cancelled. The length of the timeout interval is defined by means outside\n the scope of the present document.\n* NOTE 5: The list of rejected coordinations may be garbage collected if the LCM operation occurrence has\n reached a terminal state, i.e. one of \"COMPLETED\", \"FAILED\" and \"ROLLED_BACK\".\n", + "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists. * NOTE 1:\tThis allows the API consumer to obtain the information contained in the latest \"result\"\n notification if it has not received it due to an error or a wrongly configured subscription filter.\n* NOTE 2:\tNot more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present. * NOTE 3:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed\n for signalling the different types of changes, i.e. one per virtual link and change type.\n For instance, in the case of signaling affected VL instances involving the addition of a\n particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition\n of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\",\n and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the\n \"changeType\" equal to \"LINK_PORT_ADDED\".\n* NOTE 4:\tA coordination action has timed out if the VNFM has not been able to read the\n \"Individual coordination action\" resource within a timeout interval after requesting the coordination\n to be started or to be cancelled. The length of the timeout interval is defined by means outside\n the scope of the present document.\n* NOTE 5: The list of rejected coordinations may be garbage collected if the LCM operation occurrence has\n reached a terminal state, i.e. one of \"COMPLETED\", \"FAILED\" and \"ROLLED_BACK\".\n", "type": "object", "oneOf": [ { @@ -63,7 +63,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -77,7 +77,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] }, "isAutomaticInvocation": { @@ -85,7 +86,7 @@ "type": "boolean" }, "operationParams": { - "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n", + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModificationRequest * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest * SELECT_DEPL_MODS: SelectVnfDeployableModulesRequest\n", "type": "object" }, "isCancelPending": { @@ -291,7 +292,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Network MCIO that is used by a VNF instance. Information about the resource is available from the VIM or the CISM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -468,7 +469,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Storage MCIO that is used by a VNF instance. Information about the resource is available from the VIM or the CISM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -767,7 +768,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for\n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only\n required to configure one \"cpConfig\" per \"cpdId\", not per VNFC instance. The case of using, for a scalable\n VDU, a cloud native template in the MCIOP that describes one single VNFC instance is not specified in the\n present document version.\n", "type": "object", "required": [ "cpdId" @@ -778,10 +779,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -846,23 +847,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -889,6 +873,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -941,7 +942,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the \n CIS cluster is set up to be able to configure an external load balancer. Otherwise, it shall be ignored.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP \n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for \n Kubernetes┬« that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time.\n", "type": "object", "required": [ "type" @@ -960,9 +961,34 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } } } } @@ -1102,39 +1128,6 @@ "vnfdVersion": { "description": "A version.\n", "type": "string" - }, - "vimConnectionInfo": { - "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-relate dparameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM., CISM, CIR or MCIOP repository.\n", - "type": "object", - "required": [ - "vimType" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", - "type": "string" - }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } } } }, -- GitLab From 4b78c7a747f981918c2af2be7c853bac0c816dad Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Mon, 9 Dec 2024 17:50:05 +0500 Subject: [PATCH 023/141] add header check for Location as per SOL002 specifications --- .../ChangeCurrentVNFPackageTask.robot | 2 ++ .../ChangeExternalVNFConnectivityTask.robot | 2 ++ SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot | 2 ++ SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot | 2 ++ SOL002/VNFLifecycleManagement-API/HealVNFTask.robot | 2 ++ SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot | 1 + SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot | 3 +++ SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot | 2 ++ .../VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot | 2 ++ SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot | 3 +++ SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot | 3 +++ SOL002/VNFLifecycleManagement-API/Subscriptions.robot | 2 ++ SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot | 2 ++ SOL002/VNFLifecycleManagement-API/VNFInstances.robot | 2 ++ SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot | 2 ++ 15 files changed, 32 insertions(+) diff --git a/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot index a5b55364..4200cd30 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot @@ -19,6 +19,7 @@ POST Change current VNF Package Task ... Post-Conditions: in response header Location shall not be null POST Change Current VNF Package Task Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Change current VNF Package Task - Conflict @@ -92,6 +93,7 @@ POST Change current VNF Package Task with permitted authorization scope ... Post-Conditions: in response header Location shall not be null POST Change Current VNF Package Task with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Change current VNF Package Task with not permitted authorization scope [Documentation] Test ID: 6.3.5.22.8 diff --git a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index d5046bf1..faf86d24 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -19,6 +19,7 @@ POST Change external VNF connectivity ... Post-Conditions: in response header Location shall not be null POST Change External VNF Connectivity Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id GET Change external VNF connectivity - Method not implemented @@ -92,6 +93,7 @@ POST Change external VNF connectivity with permitted authorization scope ... Post-Conditions: in response header Location shall not be null POST Change External VNF Connectivity with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Change external VNF connectivity with not permitted authorization scope [Documentation] Test ID: 6.3.5.10.8 diff --git a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 6741749b..1e324ded 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -19,6 +19,7 @@ POST Change deployment flavour of a vnfInstance ... Post-Conditions: in response header Location shall not be null POST Change VNF deployment flavour Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) @@ -105,6 +106,7 @@ POST Change deployment flavour of a vnfInstance with permited authorization scop ... Post-Conditions: in response header Location shall not be null POST Change VNF deployment flavour with permited authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Change deployment flavour of a vnfInstance with not permited authorization scope diff --git a/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot index 2e9d0dcd..fb27077f 100644 --- a/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot +++ b/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot @@ -19,6 +19,7 @@ POST Create VNF Snapshot Task ... Post-Conditions: in response header Location shall not be null POST Create VNF Snapshot Task Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Create VNF Snapshot Task - NOT FOUND @@ -118,6 +119,7 @@ POST Create VNF Snapshot Task with permitted authorization scope ... Post-Conditions: in response header Location shall not be null POST Create VNF Snapshot Task with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Create VNF Snapshot Task with not permitted authorization scope [Documentation] Test ID: 6.3.5.23.10 diff --git a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot index f748eeba..44271af5 100644 --- a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot @@ -19,6 +19,7 @@ POST Heal a vnfInstance ... Post-Conditions: none POST Heal VNF Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Heal a vnfInstance Conflict (Not-Instantiated) @@ -106,6 +107,7 @@ POST Heal a vnfInstance with permitted authorization scope ... Post-Conditions: none POST Heal VNF with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Heal a vnfInstance with not permitted authorization scope [Documentation] Test ID: 6.3.5.8.9 diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 04225fd6..4e89d80f 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -63,6 +63,7 @@ PATCH Individual VNFInstance ... Post-Conditions: VNF instance modified PATCH individual vnfInstance Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id PATCH Individual VNFInstance Precondition failed diff --git a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot index c79d6f1a..bca14314 100644 --- a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -21,6 +21,7 @@ POST Instantiate a vnfInstance ... Post-Conditions: none POST instantiate individual vnfInstance Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Instantiate a vnfInstance Conflict @@ -121,6 +122,8 @@ POST Instantiate a vnfInstance with permited authorization scope ... Post-Conditions: none POST instantiate individual vnfInstance with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Operation Occurrence Id POST Instantiate a vnfInstance with not permited authorization scope [Documentation] Test ID: 6.3.5.3.10 diff --git a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot index 7ad05a0d..9d6aa70b 100644 --- a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -19,6 +19,7 @@ POST Operate a vnfInstance ... Post-Conditions: none POST Operate VNF Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Operate a vnfInstance Conflict (Not-Instantiated) @@ -105,6 +106,7 @@ POST Operate a vnfInstance with permitted authorization scope ... Post-Conditions: none POST Operate VNF with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Operate a vnfInstance with not permitted authorization scope [Documentation] Test ID: 6.3.5.9.9 diff --git a/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot index 6997b80a..c4aadf2b 100644 --- a/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -19,6 +19,7 @@ POST Revert to VNF Snapshot Task ... Post-Conditions: in response header Location shall not be null POST Revert to VNF Snapshot Task Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Revert to VNF Snapshot Task - NOT FOUND @@ -105,6 +106,7 @@ POST Revert to VNF Snapshot Task with permitted authorization scope ... Post-Conditions: in response header Location shall not be null POST Revert to VNF Snapshot Task with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Revert to VNF Snapshot Task with not permitted authorization scope [Documentation] Test ID: 6.3.5.24.9 diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot index 976b7041..99973cce 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -19,6 +19,7 @@ POST Scale a vnfInstance ... Post-Conditions: none POST Scale vnfInstance 0 Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Scale a vnfInstance Conflict (Not-Instantiated) @@ -106,6 +107,8 @@ POST Scale a vnfInstance with permited authorization scope ... Post-Conditions: none POST Scale vnfInstance with permitted authorization scope 0 Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Operation Occurrence Id POST Scale a vnfInstance with not permited authorization scope [Documentation] Test ID: 6.3.5.4.9 diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 5fd08f49..24d68e89 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -18,6 +18,7 @@ POST Scale a vnfInstance to level with Attribute instantiationLevelId ... Post-Conditions: none POST Scale vnfInstance to level with instantiationLevelId Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id @@ -106,6 +107,8 @@ POST Scale a vnfInstance to level with Attribute instantiationLevelId and permit ... Post-Conditions: none POST Scale vnfInstance to level with instantiationLevelId and permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Operation Occurrence Id POST Scale a vnfInstance to level with Attribute instantiationLevelId and not permitted authorization scope [Documentation] Test ID: 6.3.5.5.9 diff --git a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot index 7bcbe8b8..0c0c198a 100644 --- a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot @@ -21,6 +21,7 @@ POST Create a new subscription ... Post-Conditions: in response header Location shall not be null Post Create subscription Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is subscription POST Create a new Subscription - DUPLICATION @@ -226,6 +227,7 @@ POST Create a new subscription with permitted authorization scope ... Post-Conditions: in response header Location shall not be null Post Create subscription with permitted authorization scope Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is subscription POST Create a new subscription with not permitted authorization scope [Documentation] Test ID: 6.3.5.17.18 diff --git a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot index e955e495..ce45be3f 100644 --- a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -19,6 +19,7 @@ POST Terminate a vnfInstance ... Post-Conditions: none POST Terminate VNF Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Terminate a vnfInstance Conflict (Not-Instantiated) @@ -92,6 +93,7 @@ POST Terminate a vnfInstance with permited authorization scope ... Post-Conditions: none POST Terminate VNF with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Terminate a vnfInstance with not permited authorization scope [Documentation] Test ID: 6.3.5.7.8 diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index 79fec640..a89e46c8 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -18,6 +18,7 @@ POST Create a new vnfInstance ... Post-Conditions: VNF instance created POST Create a new vnfInstance Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is vnfInstance Check HTTP Response Body vnfInstance content against VNF Descriptor @@ -185,6 +186,7 @@ POST Create a new vnfInstance with permitted authorization scope ... Post-Conditions: VNF instance created POST Create a new vnfInstance with permitted authorization scope Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is vnfInstance Check HTTP Response Body vnfInstance content against VNF Descriptor POST Create a new vnfInstance with not permitted authorization scope diff --git a/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot index 588cff4f..0bc22eaa 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -14,6 +14,7 @@ POST Create a new VNF Snapshot ... Post-Conditions: VNF snapshot is created POST Create a new VNF Snapshot Check HTTP Response Status Code Is 201 + Check Http Response Header Contains Location Check HTTP Response Body Json Schema Is VnfSnapshotInfo Check HTTP Location Header Contains URI of Created Resource @@ -193,6 +194,7 @@ POST Create a new VNF Snapshot with permitted authorization scope ... Post-Conditions: VNF snapshot is created POST Create a new VNF Snapshot with permitted authorization scope Check HTTP Response Status Code Is 201 + Check Http Response Header Contains Location Check HTTP Response Body Json Schema Is VnfSnapshotInfo Check HTTP Location Header Contains URI of Created Resource POST Create a new VNF Snapshot with not permitted authorization scope -- GitLab From fd8859bd8b594a6ceb8803b0831cbf7d5090f01c Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 11 Dec 2024 12:46:51 +0500 Subject: [PATCH 024/141] update document version number of descriptors --- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index fba0c049..af1d9915 100644 --- a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -44,7 +44,7 @@ node_types: type: list entry_schema: type: string - default: [ 'etsivnfm:v4.5.1' ] + default: [ 'etsivnfm:v5.1.1' ] interfaces: Vnflcm: type: "tosca.interfaces.nfv.Vnflcm" -- GitLab From b2392a1ffc30d10173aab65c8433eb1bdbd0a541 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 11 Dec 2024 15:56:36 +0500 Subject: [PATCH 025/141] correct vnfinstance response body schema as per documentation --- .../schemas/vnfInstance.schema.json | 5 ----- .../schemas/vnfInstances.schema.json | 5 ----- 2 files changed, 10 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index 8cff67c8..44af7079 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -453,11 +453,6 @@ "resourceTemplateId" ], "oneOf": [ - { - "required": [ - "resourceTemplateId" - ] - }, { "required": [ "requestedCpuResources" diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index f37aa985..6a050bd7 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -455,11 +455,6 @@ "resourceTemplateId" ], "oneOf": [ - { - "required": [ - "resourceTemplateId" - ] - }, { "required": [ "requestedCpuResources" -- GitLab From 3a654c50b6e62b9012a7713e2392e7a3735b5943 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 11:05:11 +0500 Subject: [PATCH 026/141] test different methods of notification endpoint of VNF LCM as per SOL 002 specification version 5.1.1 --- .../NotificationEndpoint.robot | 47 +++++++++++++++++++ .../VnfLcmOperationKeywords.robot | 33 +++++++++++++ 2 files changed, 80 insertions(+) diff --git a/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot index 451c5f51..c11f60d2 100644 --- a/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot @@ -45,6 +45,53 @@ VNF Identifier Deletion Notification Post VNF Identifier Deletion Notification Check HTTP Response Status Code Is 204 +Test the Notification Endpoint - Successful + [Documentation] Test ID: 6.3.5.21.4 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.4.20.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.5.21.5 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.4.20.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 + +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.5.21.6 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.4.20.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 + +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.5.21.7 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.4.20.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 + *** Keywords *** Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 90deab04..0ab3debd 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -2444,4 +2444,37 @@ POST Create a new VNF Snapshot with not permitted authorization scope Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PUT notification endpoint + Log Trying to perform a PUT. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PATCH notification endpoint + Log Trying to perform a PATCH. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + Log Trying to perform a DELETE. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file -- GitLab From 0f410fc645bf1b43bc8bb876953083c39a98fff7 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 16:24:59 +0500 Subject: [PATCH 027/141] implement missing test cases for mandatory response codes as per SOL 002 specifications version 5.1.1 --- .../VNFLifecycleManagement-API/VNFInstances.robot | 12 ++++++++++++ .../VnfLcmOperationOccurences.robot | 13 ++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index a89e46c8..73f266c4 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -201,3 +201,15 @@ POST Create a new vnfInstance with not permitted authorization scope POST Create a new vnfInstance with not permitted authorization scope Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails +GET information about multiple VNF instances - Bad Request Response too big + [Documentation] Test ID: 6.3.5.1.16 + ... Test title: GET information about multiple VNF instances - Bad Request Response too big + ... Test objective: The objective is to test that GET method fail retrieving information about multiple VNF instances because Response is too big. + ... Pre-conditions: none + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET multiple vnfInstances + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index e26c9267..59186ec4 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -211,4 +211,15 @@ GET status information about multiple VNF LCM operation occurrences with not per GET VNF LCM OP occurrences with not permitted authorization scope Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails - \ No newline at end of file +GET information about multiple VNF instances - Bad Request Response too big + [Documentation] Test ID: 6.3.5.11.17 + ... Test title: GET information about multiple VNF instances - Bad Request Response too big + ... Test objective: The objective is to test that GET method fail retrieving information about multiple VNF LCM operation occurrences because Response is too big. + ... Pre-conditions: none + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET VNF LCM OP occurrences + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails -- GitLab From 6c446fb33cdcf7e7c2c1788b420f2e864d4b05cf Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 16:28:14 +0500 Subject: [PATCH 028/141] implement test case to check 401 response code for instantiateVNFTask --- .../InstantiateVNFTask.robot | 12 ++++++++++++ .../VnfLcmOperationKeywords.robot | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot index bca14314..c83588ab 100644 --- a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -137,6 +137,18 @@ POST Instantiate a vnfInstance with not permited authorization scope POST instantiate individual vnfInstance with not permitted authorization scope Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails +POST Instantiate a vnfInstance with not valid authorization token + [Documentation] Test ID: 6.3.5.3.11 + ... Test title: POST Instantiate a vnfInstance with non permited authorization scope + ... Test objective: The objective is to instantiate a VNF instance using incorrect OAuth scope value with not permited authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + POST instantiate individual vnfInstance with not valid authorization token + Check HTTP Response Status Code Is 401 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 0ab3debd..c6419f23 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -1884,6 +1884,17 @@ POST instantiate individual vnfInstance with not permitted authorization scope ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST instantiate individual vnfInstance with not valid authorization token + Log Trying to Instantiate a vnf Instance with OAuth Token with non authorized tokken + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + ${template}= Get File jsons/instantiateVnfRequest.json + ${body}= Format String ${template} flavourId=${flavourId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + POST Scale vnfInstance with permitted authorization scope [Arguments] ${vnf_state} [Documentation] ${vnf_state} differentiate the VNF ID to be used in the different POST requests -- GitLab From 02d6736105abc6258313e14f643049521887d745 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 17:26:30 +0500 Subject: [PATCH 029/141] correct the response codes as per SOL specifications --- .../FailOperationTask.robot | 4 ++-- .../VnfLcmOperationOccurences.robot | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot index f5b4933b..48b4634a 100644 --- a/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot @@ -17,7 +17,7 @@ POST Fail operation task ... Applicability: none ... Post-Conditions: none Post Fail operation - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check Operation Occurrence Id Check operation resource state is FINALLY_FAILED @@ -104,7 +104,7 @@ POST Fail operation task with permitted authorization scope ... Applicability: none ... Post-Conditions: none Post Fail operation with permitted authorization scope - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check Operation Occurrence Id Check operation resource state is FINALLY_FAILED POST Fail operation task with not permitted authorization scope diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index 59186ec4..6c1d5149 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -30,7 +30,7 @@ GET status information about multiple VNF LCM operation occurrences ... Applicability: none ... Post-Conditions: none GET VNF LCM OP occurrences - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs Check HTTP Response Body vnf LCM OpOCCs content against VNF Descriptor @@ -70,7 +70,7 @@ GET status information about multiple VNF LCM Operation occurrences with "all_fi ... Applicability: none ... Post-Conditions: none Get VNF LCM Operation occurrences with all_fields attribute selector - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs GET status information about multiple VNF LCM Operation occurrences with "exlude_default" @@ -83,7 +83,7 @@ GET status information about multiple VNF LCM Operation occurrences with "exlude ... Applicability: none ... Post-Conditions: none Get VNF LCM Operation occurrences with exclude_default attribute selector - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs GET status information about multiple VNF LCM Operation occurrences with "fields" @@ -96,7 +96,7 @@ GET status information about multiple VNF LCM Operation occurrences with "fields ... Applicability: none ... Post-Conditions: none Get VNF LCM Operation occurrences with fields attribute selector - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs GET status information about multiple VNF LCM Operation occurrences with "exclude_fields" @@ -109,7 +109,7 @@ GET status information about multiple VNF LCM Operation occurrences with "exclud ... Applicability: none ... Post-Conditions: none Get VNF LCM Operation occurrences with exclude_fields attribute selector - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs PUT status information about multiple VNF LCM operation occurrences - Method not implemented @@ -196,7 +196,7 @@ GET status information about multiple VNF LCM operation occurrences with permitt ... Applicability: none ... Post-Conditions: none GET VNF LCM OP occurrences with permitted authorization scope - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs Check HTTP Response Body vnf LCM OpOCCs content against VNF Descriptor GET status information about multiple VNF LCM operation occurrences with not permitted authorization scope -- GitLab From f305872dc3bbc39f1f13e9dcc4b610699925a5e2 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 17:42:30 +0500 Subject: [PATCH 030/141] update api version number in variable.txt as per SOL002 specifications --- SOL002/VNFLifecycleManagement-API/environment/variables.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index dd51a649..7203ec85 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -13,7 +13,7 @@ ${ACCEPT_JSON} application/json ${apiRoot} / ${apiName} vnflcm ${apiMajorVersion} v2 -${API_VERSION} 2.12.0 +${API_VERSION} 2.14.0 ${AUTH_USAGE} 1 ${OAUTH_Encryption_ALGORITHM} HS256 ${NEG_SCOPE} vnflcm:v2:invalid -- GitLab From 961362d60aa382d26c5b653b897a8d00dcaeeb2b Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 17 Jan 2025 15:15:23 +0500 Subject: [PATCH 031/141] implement cancel operations task - Starting as per Tacker feedback --- .../CancelOperationTask.robot | 13 +++++++++++++ .../VnfLcmOperationKeywords.robot | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot index 996087f6..d6219c1a 100644 --- a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -121,6 +121,19 @@ Post Cancel operation task with not permitted authorization scope Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails +Post Cancel operation task - STARTING + [Documentation] Test ID: 6.3.5.16.10 + ... Test title: POST Cancel operation task + ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed, i.e. the "VNF LCM operation occurrence" is in "STARTING" state. + ... Pre-conditions: the "VNF LCM operation occurrence" is in "STARTING" state. + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: the resource is in ROLLED_BACK state + POST Cancel operation task + Check HTTP Response Status Code Is 202 + Check operation resource state is ROLLED_BACK + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index c6419f23..df0887c6 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -2488,4 +2488,8 @@ DELETE notification endpoint Delete ${callbackResp} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - \ No newline at end of file + +Check operation resource state is ROLLED_BACK + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + String response body instantiationState ROLLED_BACK \ No newline at end of file -- GitLab From a2b23593883e9cb3ca5f485209853d1170beaaf5 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Mon, 20 Jan 2025 16:54:44 +0500 Subject: [PATCH 032/141] implement test case to get Paged Response with nextpage_opauque_marker parameter --- .../VNFInstances.robot | 25 +++++++++++++++++++ .../VnfLcmOperationKeywords.robot | 24 +++++++++++++++++- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index 73f266c4..d8c9ee28 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -213,3 +213,28 @@ GET information about multiple VNF instances - Bad Request Response too big GET multiple vnfInstances Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple VNF instances to get Paged Response + [Documentation] Test ID: 6.3.5.1.17 + ... Test title: GET information about multiple VNF instances to get Paged Response + ... Test objective: The objective is to query information about multiple VNF instances to get Paged Response. + ... Pre-conditions: none + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM supports response paging for the subscriptions resources + ... Post-Conditions: none + GET multiple vnfInstances + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contain Link to next page + +GET information about multiple VNF instances as a Paged Response with nextpage_opauque_marker parameter + [Documentation] Test ID: 6.3.5.1.17a + ... Test title: GET information about multiple VNF instances as a Paged Response with nextpage_opauque_marker parameter + ... Test objective: The objective is to query information about multiple VNF instances as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter + ... Pre-conditions: A request for retrieving multiple VNF instances as a paged response has been successfully issued (Test ID 6.3.5.1.17) + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM supports response paging for the VNF instance resources + ... Post-Conditions: none + Get multiple vnfInstances with nextpage_opaque_marker parameter + Check HTTP Response Status Code Is 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index df0887c6..988f7a56 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -2492,4 +2492,26 @@ DELETE notification endpoint Check operation resource state is ROLLED_BACK Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - String response body instantiationState ROLLED_BACK \ No newline at end of file + String response body instantiationState ROLLED_BACK + +Check HTTP Response Header Contain Link to next page + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + Log Check that Link header contains rel set to next + Should Contain ${linkURL} rel="next" + Log Check that Link header contains URI to next page between <> + ${linkHeaderUri}= Get Regexp Matches ${linkURL} (?<=\<)(.*?)(?=\>) + ${length}= Get Length ${linkHeaderUri} + Should Be Equal As Integers ${length} 0 + Set Global Variable ${nextPageUri} ${linkHeaderUri[0]} + +Get multiple vnfInstances with nextpage_opaque_marker parameter + Log Get next page of subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query using the URI provided in the previous GET request and validate response + Get ${nextPageUri} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} -- GitLab From f68759c3788aec214a0f9a0ecf2860976aeef1a1 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Mon, 20 Jan 2025 16:57:17 +0500 Subject: [PATCH 033/141] implement test case to Get Information about an individual VNF Instance - Not Found --- .../IndividualVNFInstance.robot | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 4e89d80f..36e1e8fb 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -142,4 +142,16 @@ GET Information about an individual VNF Instance with permitted authorization sc GET individual vnfInstance with not permitted authorization scope Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails +Get Information about an individual VNF Instance - Not Found + [Documentation] Test ID: 6.3.5.2.11 + ... Test title: Get Information about an individual VNF Instance - Not Found + ... Test objective: The objective is to test that the retrieval of an individual VNF Instance fails when instance is not present. + ... Pre-conditions: none + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual vnfInstance + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file -- GitLab From 01d7e0b2749e17183cea42f449c5e1e494cc9ff2 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Mon, 20 Jan 2025 17:04:37 +0500 Subject: [PATCH 034/141] implement test case to Get Individual VNF LCM Operation occurrences - Not Found --- .../IndividualVnfLcmOperationOccurence.robot | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index b69413df..1b626f70 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -93,3 +93,16 @@ Get status information about individual VNF instances with not permitted authori Get Individual VNF LCM OP occurrences with not permitted authorization scope Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails + +Get Individual VNF LCM Operation occurrences - Not Found + [Documentation] Test ID: 6.3.5.12.8 + ... Test title: Get status information about individual VNF instances - Not Found + ... Test objective: The objective is to test that the retrieval of VNF lifecycle management operation occurrence fails when instance is not present. + ... Pre-conditions: none + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Individual VNF LCM OP occurrences + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file -- GitLab From 15bde2a53f7c6655d14f00d871fb0ce6d03a0d54 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 23 Jan 2025 10:51:53 +0500 Subject: [PATCH 035/141] Editorial change: handle mojibake in response bodies --- ...cmOperationOccurrenceNotification.schema.json | 6 +++--- .../schemas/VnfSnapshotInfo.schema.json | 16 ++++++++-------- .../schemas/VnfSnapshotsInfo.schema.json | 16 ++++++++-------- .../schemas/subscription.schema.json | 2 +- .../schemas/subscriptions.schema.json | 2 +- .../schemas/vnfInstance.schema.json | 16 ++++++++-------- .../schemas/vnfInstances.schema.json | 16 ++++++++-------- .../schemas/vnfLcmOpOcc.schema.json | 6 +++--- .../schemas/vnfLcmOpOccs.schema.json | 6 +++--- 9 files changed, 43 insertions(+), 43 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index ba97aba3..8a668231 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -61,7 +61,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the /"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -817,7 +817,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes /"netAttDefResourceId/" and /"cpProtocolData/" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1031,7 +1031,7 @@ } }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the /"NetAttDefResourceData/" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json index 069853f9..3c0d39d8 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json @@ -48,7 +48,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the /"scaleStatus/" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -480,7 +480,7 @@ } }, "type": { - "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "description": "Type of the resource definition referenced. VALUES •\tCOMPUTE •\tSTORAGE •\tOSCONTAINER", "type": "string", "enum": [ "COMPUTE", @@ -689,7 +689,7 @@ "type": "array", "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n /"extLinkPorts/" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -899,7 +899,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1545,7 +1545,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes /"netAttDefResourceId/" and /"cpProtocolData/" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1759,7 +1759,7 @@ } }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the /"NetAttDefResourceData/" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2386,7 +2386,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2704,7 +2704,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n /"kind/" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json index 85e04634..00eab352 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json @@ -50,7 +50,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the /"scaleStatus/" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -482,7 +482,7 @@ } }, "type": { - "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "description": "Type of the resource definition referenced. VALUES •\tCOMPUTE •\tSTORAGE •\tOSCONTAINER", "type": "string", "enum": [ "COMPUTE", @@ -691,7 +691,7 @@ "type": "array", "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n /"extLinkPorts/" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -901,7 +901,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1547,7 +1547,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes /"netAttDefResourceId/" and /"cpProtocolData/" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1761,7 +1761,7 @@ } }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the /"NetAttDefResourceData/" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2388,7 +2388,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2706,7 +2706,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n /"kind/" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json index 82649409..f6e6d344 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json @@ -147,7 +147,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the /"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json index 746d754e..e86b4381 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json @@ -149,7 +149,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the /"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index 44af7079..4506dbcd 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the /"scaleStatus/" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -431,7 +431,7 @@ } }, "type": { - "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "description": "Type of the resource definition referenced. VALUES •\tCOMPUTE •\tSTORAGE •\tOSCONTAINER", "type": "string", "enum": [ "COMPUTE", @@ -635,7 +635,7 @@ "type": "array", "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n /"extLinkPorts/" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -845,7 +845,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1491,7 +1491,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes /"netAttDefResourceId/" and /"cpProtocolData/" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1705,7 +1705,7 @@ } }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the /"NetAttDefResourceData/" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2332,7 +2332,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2650,7 +2650,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n /"kind/" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index 6a050bd7..24e0ea7a 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -1,7 +1,7 @@ { "type": "array", "items": { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the /"scaleStatus/" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -433,7 +433,7 @@ } }, "type": { - "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "description": "Type of the resource definition referenced. VALUES •\tCOMPUTE •\tSTORAGE •\tOSCONTAINER", "type": "string", "enum": [ "COMPUTE", @@ -637,7 +637,7 @@ "type": "array", "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n /"extLinkPorts/" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -847,7 +847,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1493,7 +1493,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes /"netAttDefResourceId/" and /"cpProtocolData/" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1707,7 +1707,7 @@ } }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the /"NetAttDefResourceData/" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2334,7 +2334,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2652,7 +2652,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n /"kind/" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json index 2ca32506..532af029 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json @@ -61,7 +61,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the /"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -780,7 +780,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes /"netAttDefResourceId/" and /"cpProtocolData/" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -994,7 +994,7 @@ } }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the /"NetAttDefResourceData/" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json index 4c35d74e..7ea9464c 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json @@ -63,7 +63,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the /"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -782,7 +782,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes /"netAttDefResourceId/" and /"cpProtocolData/" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -996,7 +996,7 @@ } }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the /"NetAttDefResourceData/" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", -- GitLab From 48c7ee09396c9dd6eef2edb9a7dc27a6c72d51f1 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 16:58:14 +0500 Subject: [PATCH 036/141] update SOL 002 version in test cases description from 4.5.1 to 5.1.1 --- SOL002/VNFFaultManagement-API/Alarms.robot | 42 ++++++++--------- .../EscalatePerceivedSeverityTask.robot | 14 +++--- .../IndividualAlarm.robot | 20 ++++---- .../IndividualSubscription.robot | 16 +++---- .../NotificationEndpoint.robot | 6 +-- .../Notifications.robot | 6 +-- .../Subscriptions.robot | 46 +++++++++---------- 7 files changed, 75 insertions(+), 75 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/Alarms.robot b/SOL002/VNFFaultManagement-API/Alarms.robot index 06c9fc69..a1654b64 100644 --- a/SOL002/VNFFaultManagement-API/Alarms.robot +++ b/SOL002/VNFFaultManagement-API/Alarms.robot @@ -14,7 +14,7 @@ POST Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET information about multiple alarms ... Test title: GET information about multiple alarms ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET information about multiple alarms with attribute-based filter ... Test title: GET information about multiple alarms with attribute-based filter ... Test objective: The objective is to retrieve information about the alarm list with attribute-based filter ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET information about multiple alarms with invalid attribute-based filter ... Test title: GET information about multiple alarms with invalid attribute-based filter ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ GET information about multiple alarms with "all_fields" attribute selector ... Test title: GET information about multiple alarms with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ GET information about multiple alarms with exclude_default attribute selector ... Test title: GET information about multiple alarms with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ GET information about multiple alarms with fields attribute selector ... Test title: GET information about multiple alarms with fields attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ GET information about multiple alarms with "exclude_fields" attribute selector ... Test title: GET information about multiple alarms with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ PUT Alarms - Method not implemented ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH Alarms - Method not implemented ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE Alarms - Method not implemented ... Test title: DELETE Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ GET information about multiple alarms to get Paged Response ... Test title: GET information about multiple alarms to get Paged Response ... Test objective: The objective is to retrieve information about the alarms to get paged response ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -166,7 +166,7 @@ GET information about multiple alarms for Bad Request Response too big ... Test title: GET information about multiple alarms for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about Alarms when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -179,7 +179,7 @@ GET information about alarms with attribute-based filter "id" ... Test title: GET information about alarms with attribute-based filter "id" ... Test objective: The objective is to retrieve information about the alarm list with alarm filter "id" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -193,7 +193,7 @@ GET information about multiple alarms with attribute-based filter "vnfcInstanceI ... Test title: GET information about multiple alarms with attribute-based filter "vnfcInstanceIds" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "vnfcInstanceIds" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -207,7 +207,7 @@ GET information about multiple alarms with attribute-based filter "rootCauseFaul ... Test title: GET information about multiple alarms with attribute-based filter "rootCauseFaultyResource.faultyResourceType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "rootCauseFaultyResource.faultyResourceType" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -221,7 +221,7 @@ GET information about multiple alarms with attribute-based filter "eventType" ... Test title: GET information about multiple alarms with attribute-based filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "eventType" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -235,7 +235,7 @@ GET information about multiple alarms with attribute-based filter "perceivedSeve ... Test title: GET information about multiple alarms with attribute-based filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "perceivedSeverity" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -249,7 +249,7 @@ GET information about multiple alarms with attribute-based filter "probableCause ... Test title: GET information about multiple alarms with attribute-based filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "probableCause" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -262,7 +262,7 @@ GET information about multiple alarms with permitted authorization scope ... Test title: GET information about multiple alarms with permitted authorization scope ... Test objective: The objective is to retrieve information about the alarm list with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -274,7 +274,7 @@ GET information about multiple alarms with not permitted authorization scope ... Test title: GET information about multiple alarms with not permitted authorization scope ... Test objective: The objective is to retrieve information about the alarm list with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot index b9f1023c..caed1031 100644 --- a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot +++ b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot @@ -13,7 +13,7 @@ Escalate the perceived severity ... Test title: Escalate the perceived severity ... Test objective: To enable the consumer to escalate the perceived severity of an alarm that is represented by an individual alarm resource. ... Pre-conditions: The resource representing the individual alarm has been created - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Escalate the perceived severity - Method not implemented ... Test title: GET Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the GET HTTP method not implemented for escalate perceived severity ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT Escalate the perceived severity - Method not implemented ... Test title: PUT Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the PUT HTTP method not implemented for escalate perceived severity ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PATCH Escalate the perceived severity - Method not implemented ... Test title: PATCH Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the PATCH HTTP method not implemented for escalate perceived severity ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ DELETE Escalate the perceived severity - Method not implemented ... Test title: DELETE Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the DELETE HTTP method not implemented for escalate perceived severity ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ Escalate the perceived severity with permitted authorization scope ... Test title: Escalate the perceived severity with permitted authorization scope ... Test objective: To enable the consumer to escalate the perceived severity of an alarm that is represented by an individual alarm resource with permitted authorization scope. ... Pre-conditions: The resource representing the individual alarm has been created - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ Escalate the perceived severity with NOT permitted authorization scope ... Test title: Escalate the perceived severity with NOT permitted authorization scope ... Test objective: To enable the consumer to escalate the perceived severity of an alarm that is represented by an individual alarm resource with NOT permitted authorization scope. ... Pre-conditions: The resource representing the individual alarm has been created - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot index 4ba0b4b5..79f9e66f 100644 --- a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot @@ -16,7 +16,7 @@ POST Alarm - Method not implemented ... Test title: POST Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET information about an individual alarm ... Test title: GET information about an individual alarm ... Test objective: The objective is to read an individual alarm. ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ PUT Individual Alarm - Method not implemented ... Test title: PUT Individual Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ PATCH Individual Alarm ... Test title: PATCH Individual Alarm ... Test objective: The objective is to Modify an individual alarm resource ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ PATCH Individual Alarm - Precondition failed ... Test title: PATCH Individual Alarm - Precondition failed ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The alarm resource is not modified @@ -82,7 +82,7 @@ PATCH Individual Alarm - Conflict ... Test title: PATCH Individual Alarm - Conflict ... Test objective: The objective is to Modify an individual alarm resource ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The alarm resource is not modified @@ -96,7 +96,7 @@ DELETE Individual Alarm - Method not implemented ... Test title: DELETE Individual Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -108,7 +108,7 @@ GET information about an individual alarm - Not Found ... Test title: GET information about an individual alarm - Not Found ... Test objective: The objective is to test that GET method fail retrieving status information about individaual Alarms when alarm is not present. ... Pre-conditions: The related alarm doesnot exists - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -120,7 +120,7 @@ PATCH Individual Alarm with permitted authorization scope ... Test title: PATCH Individual Alarm with permitted authorization scope ... Test objective: The objective is to Modify an individual alarm resource with permitted authorization scope ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -133,7 +133,7 @@ PATCH Individual Alarm with NOT permitted authorization scope ... Test title: PATCH Individual Alarm with NOT permitted authorization scope ... Test objective: The objective is to Modify an individual alarm resource with NOT permitted authorization scope ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot index 9778058a..f5186f14 100644 --- a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot @@ -14,7 +14,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Information about an individual subscription ... Test title: GET Information about an individual subscription ... Test objective: The objective is to read an individual subscription for VNF alarms subscribed by the client ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that the deletion of a individual subscription resource. ... Pre-conditions: one or more subscription already exsist - ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: the subscription is deleted @@ -76,7 +76,7 @@ GET Information about an individual subscription - Not Found ... Test title: GET Information about an individual subscription - Not Found ... Test objective: The objective is to test that GET method fail retrieving individual subscription for VNF alarms subscribed by the client because it is not present. ... Pre-conditions: The subscription with the given id donot exists - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ GET Information about an individual subscription with permitted authorization sc ... Test title: GET Information about an individual subscription with permitted authorization scope ... Test objective: The objective is to read an individual subscription for VNF alarms subscribed by the client with the permitted authorization scope ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ GET Information about an individual subscription with NOT permitted authorizatio ... Test title: GET Information about an individual subscription with NOT permitted authorization scope ... Test objective: The objective is to read an individual subscription for VNF alarms subscribed by the client with not permitted authorization scope ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot index 59915594..00313277 100644 --- a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF Fault Alarm Notification ... Test title: VNF Fault Alarm Notification ... Test objective: The objective is to test that VNF Fault Alarm Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ VNF Fault Alarm Cleared Notification ... Test title: VNF Fault Alarm Cleared Notification ... Test objective: The objective is to test that VNF Fault Alarm Cleared Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm cleared notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ VNF Fault Alarm List Rebuilt Notification ... Test title: VNF Fault List Rebuilt Alarm List Rebuilt Notification ... Test objective: The objective is to test that VNF Fault Alarm List Rebuilt Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/Notifications.robot b/SOL002/VNFFaultManagement-API/Notifications.robot index 662466ee..18600c3c 100644 --- a/SOL002/VNFFaultManagement-API/Notifications.robot +++ b/SOL002/VNFFaultManagement-API/Notifications.robot @@ -15,7 +15,7 @@ VNF Fault Alarm Notification ... Test title: VNF Fault Alarm Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm Notification when a virtualised resource within an VNF instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ VNF Fault Alarm Cleared Notification ... Test title: VNF Fault Alarm Cleared Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm Cleared Notification when a faulty virtualised resource within an VNF instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Fault Alarm List Rebuilt Notification ... Test title: VNF Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm List Rebuilt Notification when the VNFM decides to rebuild the list of its VNF alarms, e.g. due to a corruption in the alarm storage, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, one or more virtualised resource are in faulty state, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index ee078294..177f6a0c 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -17,7 +17,7 @@ Create a new subscription ... Test title: Create a new subscription ... Test objective: The objective is to create a new subscription. ... Pre-conditions: no subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resource created successfully @@ -32,7 +32,7 @@ Create a duplicated Subscription ... Test title: Create a duplicated Subscription ... Test objective: The objective is to create a duplicate subscription. ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: duplicated subscription is created if the IUT allows duplications, otherwise the duplicated subscription is not created @@ -55,7 +55,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is to retrieve the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ GET Subscription - Filter ... Test title: GET Subscription - Filter ... Test objective: The objective is to retrieve the list of active subscriptions with filter ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ GET subscriptions with "all_fields" attribute selector ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -107,7 +107,7 @@ GET subscriptions with "exclude_default" attribute selector ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -120,7 +120,7 @@ GET subscriptions with "fields" attribute selector ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -133,7 +133,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -146,7 +146,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -158,7 +158,7 @@ PATCH subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -170,7 +170,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -182,7 +182,7 @@ GET Subscriptions to get Paged Response ... Test title: GET Subscriptions to get Paged Response ... Test objective: The objective is to retrieve the list of active subscriptions to get paged response ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -195,7 +195,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that GET method fail retrieving list of active subscription because Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -208,7 +208,7 @@ GET Subscription with attribute-based filter "id" ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -222,7 +222,7 @@ Get subscriptions with filter "filter.notificationTypes" ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -236,7 +236,7 @@ Get subscriptions with filter "filter.faultyResourceTypes" ... Test title: GET Subscription with attribute-based filter "filter.faultyResourceTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.faultyResourceTypes" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -250,7 +250,7 @@ Get subscriptions with filter "filter.perceivedSeverities" ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -264,7 +264,7 @@ Get subscriptions with filter "filter.eventTypes" ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -278,7 +278,7 @@ Get subscriptions with filter "filter.probableCauses" ... Test title: GET Subscription with attribute-based filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -292,7 +292,7 @@ POST Create a new Subscription - Unprocessable Content ... Test title: POST Create a new Subscription - Unprocessable Content ... Test objective: The objective is to test that content type of the message content is supported and the message content of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -304,7 +304,7 @@ Create a new subscription with permitted authorization scope ... Test title: Create a new subscription with permitted authorization scope ... Test objective: The objective is to create a new subscription with permitted authorization scope. ... Pre-conditions: no subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resource created successfully @@ -318,7 +318,7 @@ Create a new subscription with not permitted authorization scope ... Test title: Create a new subscription with not permitted authorization scope ... Test objective: The objective is to create a new subscription with not permitted authorization scope. ... Pre-conditions: no subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resource created successfully -- GitLab From 03ba47c0e3fbc456326d2a4e2ac52f679a002ef6 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 10:46:43 +0500 Subject: [PATCH 037/141] update test cases of VNFFaultManagement-API as per SOL 002 version 5.1.1 --- .../schemas/FmSubscription.schema.json | 49 ++++++++++++++++++- .../schemas/FmSubscriptions.schema.json | 49 ++++++++++++++++++- .../schemas/alarm.schema.json | 6 +-- .../schemas/alarmNotification.schema.json | 6 +-- .../schemas/alarms.schema.json | 6 +-- 5 files changed, 105 insertions(+), 11 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json b/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json index e6fc6b8a..612f69cc 100644 --- a/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json @@ -23,7 +23,7 @@ "oneOf": [ { "required": [ - "vnfdId" + "vnfdIds" ] }, { @@ -199,6 +199,53 @@ "description": "String formatted according to IETF RFC 3986.\n", "type": "string" }, + "pmJobConnection": { + "description": "An access information and interface information to monitor the FM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "The MonitoringConnection shall follow the indications. * NOTE:\tThe VNFM can be made aware of monitoring connection information, including their identifiers to \n be used by configuration means outside the scope of the present document (e.g. using relevant NFV-MANO management \n APIs as defined in ETSI GS NFV-SOL 009). \n", + "type": "object", + "required": [ + "id", + "monitoringType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + } + } + }, "_links": { "description": "Links for this resource.\n", "type": "object", diff --git a/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json b/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json index d61b2a28..e0530780 100644 --- a/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json @@ -25,7 +25,7 @@ "oneOf": [ { "required": [ - "vnfdId" + "vnfdIds" ] }, { @@ -201,6 +201,53 @@ "description": "String formatted according to IETF RFC 3986.\n", "type": "string" }, + "pmJobConnection": { + "description": "An access information and interface information to monitor the FM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "The MonitoringConnection shall follow the indications. * NOTE:\tThe VNFM can be made aware of monitoring connection information, including their identifiers to \n be used by configuration means outside the scope of the present document (e.g. using relevant NFV-MANO management \n APIs as defined in ETSI GS NFV-SOL 009). \n", + "type": "object", + "required": [ + "id", + "monitoringType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + } + } + }, "_links": { "description": "Links for this resource.\n", "type": "object", diff --git a/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json b/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json index 44aea28b..970c70e6 100644 --- a/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json @@ -153,11 +153,11 @@ ] }, "faultType": { - "description": "Additional information to clarify the type of the fault. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE _CHANGE\".\n", + "description": "Additional information to clarify the type of the fault. Valid values applicable to specific Alarms are specified as \"Alarm definition identifier\" values of the Alarm applicable to Ve-Vnfm reference point. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE _CHANGE\".\n", "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", "type": "string" }, "isRootCause": { @@ -173,7 +173,7 @@ } }, "faultDetails": { - "description": "Provides additional information about the fault. See notes 1 and 2.\n", + "description": "Provides additional information about the fault. See notes 1 and 2. Valid values applicable to specific Alarms are specified as \"Fault details\" values of the Alarm applicable to Ve-Vnfm reference point.\n", "type": "array", "items": { "type": "string" diff --git a/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json b/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json index aba8ecf6..986ced11 100644 --- a/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json @@ -185,11 +185,11 @@ ] }, "faultType": { - "description": "Additional information to clarify the type of the fault. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE _CHANGE\".\n", + "description": "Additional information to clarify the type of the fault. Valid values applicable to specific Alarms are specified as \"Alarm definition identifier\" values of the Alarm applicable to Ve-Vnfm reference point. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE _CHANGE\".\n", "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", "type": "string" }, "isRootCause": { @@ -205,7 +205,7 @@ } }, "faultDetails": { - "description": "Provides additional information about the fault. See notes 1 and 2.\n", + "description": "Provides additional information about the fault. See notes 1 and 2. Valid values applicable to specific Alarms are specified as \"Fault details\" values of the Alarm applicable to Ve-Vnfm reference point.\n", "type": "array", "items": { "type": "string" diff --git a/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json b/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json index 632fefd6..74582f4b 100644 --- a/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json @@ -155,11 +155,11 @@ ] }, "faultType": { - "description": "Additional information to clarify the type of the fault. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE _CHANGE\".\n", + "description": "Additional information to clarify the type of the fault. Valid values applicable to specific Alarms are specified as \"Alarm definition identifier\" values of the Alarm applicable to Ve-Vnfm reference point. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE _CHANGE\".\n", "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", "type": "string" }, "isRootCause": { @@ -175,7 +175,7 @@ } }, "faultDetails": { - "description": "Provides additional information about the fault. See notes 1 and 2.\n", + "description": "Provides additional information about the fault. See notes 1 and 2. Valid values applicable to specific Alarms are specified as \"Fault details\" values of the Alarm applicable to Ve-Vnfm reference point.\n", "type": "array", "items": { "type": "string" -- GitLab From 1cf67d239bd84ae641d149097936470de47eccea Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 10:50:56 +0500 Subject: [PATCH 038/141] editorial change: Reformatted schemas --- .../schemas/ApiVersionInformation.schema.json | 64 +++++++++---------- .../schemas/FmSubscriptions.schema.json | 2 +- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/schemas/ApiVersionInformation.schema.json b/SOL002/VNFFaultManagement-API/schemas/ApiVersionInformation.schema.json index a7964119..b3582ea4 100644 --- a/SOL002/VNFFaultManagement-API/schemas/ApiVersionInformation.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/ApiVersionInformation.schema.json @@ -1,36 +1,36 @@ { - "description": "This type represents API version information.\n", - "type": "object", - "required": [ - "uriPrefix", - "apiVersions" - ], - "properties": { - "uriPrefix": { - "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", - "type": "string" - }, - "apiVersions": { - "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "version" - ], - "properties": { - "version": { - "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", - "type": "string" - }, - "isDeprecated": { - "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", - "type": "boolean" - }, - "retirementDate": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" + "description": "This type represents API version information.\n", + "type": "object", + "required": [ + "uriPrefix", + "apiVersions" + ], + "properties": { + "uriPrefix": { + "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", + "type": "string" + }, + "apiVersions": { + "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", + "type": "string" + }, + "isDeprecated": { + "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", + "type": "boolean" + }, + "retirementDate": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" } } } diff --git a/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json b/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json index e0530780..2381b8cb 100644 --- a/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json @@ -1,6 +1,6 @@ { "type": "array", - "items": { + "items": { "description": "This type represents a subscription related to notifications about VNF faults.\n", "type": "object", "required": [ -- GitLab From 9edc284e6ce8c1ba359c3e120c701258f5f20a73 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 16:00:14 +0500 Subject: [PATCH 039/141] add header check for Location as per SOL002 specifications --- SOL002/VNFFaultManagement-API/Subscriptions.robot | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index 177f6a0c..a51cd1cf 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -23,6 +23,7 @@ Create a new subscription ... Post-Conditions: Resource created successfully Post Create subscription Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is FmSubscription Check HTTP Response Header Contain Link Check Postcondition resource exists @@ -611,4 +612,9 @@ Post Create subscription with not permitted authorization scope Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${output}= Output response Set Global Variable ${response} ${output} - Clear Requests ${callback_endpoint} \ No newline at end of file + Clear Requests ${callback_endpoint} +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Log ${response['headers']} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present \ No newline at end of file -- GitLab From e63cd3f42087a6498341674997d627295db331b6 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 10:24:27 +0500 Subject: [PATCH 040/141] editorial change: attribute name correction as per SOL 002 version 5.1.1 --- .../VNFFaultManagement-API/schemas/FmSubscription.schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json b/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json index 612f69cc..a911edc7 100644 --- a/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json @@ -199,7 +199,7 @@ "description": "String formatted according to IETF RFC 3986.\n", "type": "string" }, - "pmJobConnection": { + "fmConnection": { "description": "An access information and interface information to monitor the FM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", "type": "array", "items": { -- GitLab From 6b0018babe6fe43b75c5ec2189af31e5301a5ae0 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 11:41:08 +0500 Subject: [PATCH 041/141] test different methods of notification endpoint of VNF LCM as per SOL 002 specification version 5.1.1 --- .../NotificationEndpoint.robot | 79 ++++++++++++++++++- .../environment/variables.txt | 2 +- 2 files changed, 79 insertions(+), 2 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot index 00313277..bda11454 100644 --- a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot @@ -43,6 +43,50 @@ VNF Fault Alarm List Rebuilt Notification ... Post-Conditions: none Post Alarm List Rebuilt Notification Check HTTP Response Status Code Is 204 +Test the Notification Endpoint - Successful + [Documentation] Test ID: 6.3.4.8.4 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.4.8.5 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 7.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.4.8.6 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 7.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.4.8.7 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 7.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 *** Keywords *** Check resource existence and get CallbackUri @@ -94,4 +138,37 @@ Post Alarm List Rebuilt Notification ${body}= Format String ${template} subscriptionId=${subscriptionId} Post ${callbackResp} ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Set Global Variable ${response} ${outputResponse} +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PUT notification endpoint + Log Trying to perform a PUT. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PATCH notification endpoint + Log Trying to perform a PATCH. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + Log Trying to perform a DELETE. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL002/VNFFaultManagement-API/environment/variables.txt b/SOL002/VNFFaultManagement-API/environment/variables.txt index 27051abd..5567f283 100644 --- a/SOL002/VNFFaultManagement-API/environment/variables.txt +++ b/SOL002/VNFFaultManagement-API/environment/variables.txt @@ -21,7 +21,7 @@ ${ESCALATE_SCOPE} vnffm:v1:escalate ${SUBSCRIPTIONS_SCOPE} vnffm:v1:subscriptions ${NEG_SCOPE} vnffm:v1:invalid ${OAUTH_Encryption_ALGORITHM} HS256 -${API_VERSION} 1.12.0 +${API_VERSION} 1.14.0 ${HEADER_TEST_SUPPORTED} 0 -- GitLab From c5b91a8093f0cf5bcad1fffc110632c4ae522f1a Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 18 Dec 2024 10:17:05 +0500 Subject: [PATCH 042/141] check for Location header as per SOL 002 Specifications --- SOL002/VNFFaultManagement-API/Subscriptions.robot | 1 + 1 file changed, 1 insertion(+) diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index a51cd1cf..262d4e7c 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -39,6 +39,7 @@ Create a duplicated Subscription ... Post-Conditions: duplicated subscription is created if the IUT allows duplications, otherwise the duplicated subscription is not created Post Create subscription Check Response for duplicated subscription + Check HTTP Response Header Contains Location Void [Documentation] Test ID: 6.3.4.4.3 -- GitLab From 544187f4b6a4680011d43db7af5533ce26275768 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 23 Jan 2025 10:56:29 +0500 Subject: [PATCH 043/141] Editorial Change: Handle Mojibake --- .../VNFFaultManagement-API/schemas/FmSubscription.schema.json | 2 +- .../VNFFaultManagement-API/schemas/FmSubscriptions.schema.json | 2 +- SOL002/VNFFaultManagement-API/schemas/alarm.schema.json | 2 +- .../schemas/alarmNotification.schema.json | 2 +- SOL002/VNFFaultManagement-API/schemas/alarms.schema.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json b/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json index a911edc7..6231e77a 100644 --- a/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json @@ -215,7 +215,7 @@ "type": "string" }, "monitoringType": { - "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "description": "Type of monitoring way. VALUES: \n •\tVIM_CISM\n •\tEXTERNAL\n •\tPAAS\n", "type": "string", "enum": [ "VIM_CISM", diff --git a/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json b/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json index 2381b8cb..83a3b2be 100644 --- a/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json @@ -217,7 +217,7 @@ "type": "string" }, "monitoringType": { - "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "description": "Type of monitoring way. VALUES: \n •\tVIM_CISM\n •\tEXTERNAL\n •\tPAAS\n", "type": "string", "enum": [ "VIM_CISM", diff --git a/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json b/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json index 970c70e6..82a31527 100644 --- a/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json @@ -157,7 +157,7 @@ "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE\", the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", "type": "string" }, "isRootCause": { diff --git a/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json b/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json index 986ced11..14cc4b86 100644 --- a/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json @@ -189,7 +189,7 @@ "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE\", the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", "type": "string" }, "isRootCause": { diff --git a/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json b/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json index 74582f4b..0d4e476a 100644 --- a/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json @@ -159,7 +159,7 @@ "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE\", the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", "type": "string" }, "isRootCause": { -- GitLab From b404a3e79753a1c1ceaafdce1813032a690913b2 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 17:05:23 +0500 Subject: [PATCH 044/141] update SOL 002 version in test cases description from 4.5.1 to 5.1.1 --- .../IndividualPmJob.robot | 22 ++++++------ .../IndividualReport.robot | 16 ++++----- .../IndividualThreshold.robot | 22 ++++++------ .../NotificationEndpoint.robot | 4 +-- .../Notifications.robot | 4 +-- .../VNFPerformanceManagement-API/PMJobs.robot | 36 +++++++++---------- .../Thresholds.robot | 26 +++++++------- 7 files changed, 65 insertions(+), 65 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot index 411d03f7..7e31799d 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -14,7 +14,7 @@ GET individual VNF Performance Job ... Test title: Get individual VNF Performance Job ... Test objective: The objective is to test the retrieval of an individual VNF performance monitoring job and perform a JSON schema and content validation of the collected job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ GET individual VNF Performance Job with invalid resource identifier ... Test title: Get individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ DELETE Individual VNF Performance Job ... Test title: Delete Individual VNF Performance Job ... Test objective: The objective is to test the deletion of an individual VNF performance monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is no more available in the VNFM @@ -55,7 +55,7 @@ DELETE Individual VNF Performance Job with invalid resource identifier ... Test title: Delete individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ POST Individual VNF Performance Job - Method not implemented ... Test title: POST Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Monitoring Job ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ PUT Individual VNF Performance Job - Method not implemented ... Test title: PUT Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance Monitoring Job ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ PATCH Individual VNF Performance Job ... Test title: PATCH Individual VNF Performance Job ... Test objective: The objective is to test that PATCH method allows to modify an exsisting individual PM job resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ PATCH Individual VNF Performance Job - Precondition failed ... Test title: PATCH Individual VNF Performance Job - Precondition failed ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation @@ -120,7 +120,7 @@ PATCH Individual VNF Performance Job - UNPROCESSABLE CONTENT ... Test title: PATCH Individual VNF Performance Job - UNPROCESSABLE CONTENT ... Test objective: The objective is to test that PATCH method cannot modify an exsisting individual PM job resource when the callback URI provided in the Request body is unreachable by the VNFM. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM cannot reach the Notification endpoint. ... Post-Conditions: none @@ -132,7 +132,7 @@ DELETE Individual VNF Performance Job with permitted authorization scope ... Test title: Delete Individual VNF Performance Job with permitted authorization scope ... Test objective: The objective is to test the deletion of an individual VNF performance monitoring job with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is no more available in the VNFM @@ -144,7 +144,7 @@ DELETE Individual VNF Performance Job with NOT permitted authorization scope ... Test title: Delete Individual VNF Performance Job with NOT permitted authorization scope ... Test objective: The objective is to test the deletion of an individual VNF performance monitoring job with NOT permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is no more available in the VNFM diff --git a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot index dded8544..1e9eaab7 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot @@ -11,7 +11,7 @@ Get Individual Performance Report ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Individual Performance Report with invalid resource endpoint ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual VNF performance report associated to a monitoring job fails when using an invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ POST Individual Performance Report - Method not implemented ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PUT Individual Performance Report - Method not implemented ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ PATCH Individual Performance Report - Method not implemented ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ DELETE Individual Performance Report - Method not implemented ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing VNF performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ Get Individual Performance Report with permitted authorization scope ... Test title: Get Individual Performance Report with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -96,7 +96,7 @@ Get Individual Performance Report with NOT permitted authorization scope ... Test title: Get Individual Performance Report with NOT permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure with NOT permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index 252516ad..832c0928 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -13,7 +13,7 @@ GET Individual Threshold ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual VNF performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET Individual Threshold with invalid resource identifier ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance threshold fails when using an invalid resource identifier ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ DELETE Individual Threshold ... Test title: DELETE Individual Threshold ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not available anymore in the VNFM @@ -54,7 +54,7 @@ DELETE Individual Threshold with invalid resource identifier ... Test title: DELETE Individual Threshold with invalid resource identifier ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ POST Individual Threshold - Method not implemented ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Threshold ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not created on the VNFM @@ -79,7 +79,7 @@ PUT Individual Threshold - Method not implemented ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance threshold ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ PATCH Individual Threshold ... Test title: PATCH Individual Threshold ... Test objective: The objective is to test that PATCH method allows to modify an Individual threshold resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not modified by the operation @@ -105,7 +105,7 @@ PATCH Individual Threshold - Precondition failed ... Test title: PATCH Individual Threshold - Preconition failed ... Test objective: The objective is to attempt to modify an individual threshold resource, where the precondition was not met. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation @@ -119,7 +119,7 @@ PATCH Individual Threshold - UNPROCESSABLE CONTENT ... Test title: PATCH Individual Threshold - UNPROCESSABLE CONTENT ... Test objective: The objective is to test that PATCH method cannot modify an exsisting individual PM job resource when the callback URI provided in the Request body is unreachable by the VNFM. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM cannot reach the Notification endpoint. ... Post-Conditions: The VNF Performance Threshold is not modified by the operation @@ -132,7 +132,7 @@ GET Individual Threshold with permitted authorization scope ... Test title: GET Individual Threshold with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF performance threshold and perform a JSON schema and content validation of the collected threshold data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -146,7 +146,7 @@ GET Individual Threshold with NOT permitted authorization scope ... Test title: GET Individual Threshold with NOT permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF performance threshold and perform a JSON schema and content validation of the collected threshold data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot b/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot index fb266385..78172237 100644 --- a/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF Performance Information Availability Notification ... Test title: VNF Performance Information Availability Notification ... Test objective: The objective is to test that VNF Performance Information Availability Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ VNF Threshold Crossed Notification ... Test title: VNF Threshold Crossed Notification ... Test objective: The objective is to test that VNF Threshold Crossed Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF performance job is created, and a subscription for Threshold Crossed Notification is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/Notifications.robot b/SOL002/VNFPerformanceManagement-API/Notifications.robot index a34c4bb2..37f36430 100644 --- a/SOL002/VNFPerformanceManagement-API/Notifications.robot +++ b/SOL002/VNFPerformanceManagement-API/Notifications.robot @@ -17,7 +17,7 @@ VNF Performance Information Availability Notification ... Test title: VNF Performance Information Availability Notification ... Test objective: The objective is to test the dispatch of VNF Performance Information Availability Notification when new VNF performance information is available in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ VNF Threshold Crossed Notification ... Test title: VNF Threshold Crossed Notification ... Test objective: The objective is to test the dispatch of VNF Threshold Crossed Notification when a previously set VNF performance metric threshold is crossed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF performance job is created, and a threshold subscription is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 70227517..0e6f86d2 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -13,7 +13,7 @@ GET all VNF Performance Monitoring Jobs ... Test title: GET all VNF Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET VNF Performance Monitoring Jobs with attribute-based filter ... Test title: GET all VNF Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs all_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued all_fileds selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_default selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -82,7 +82,7 @@ GET all VNF Performance Monitoring Jobs with exclude_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -96,7 +96,7 @@ GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test title: GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ GET VNF Performance Monitoring Jobs with invalid resource endpoint ... Test title: GET VNF Performance Monitoring Jobs with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ POST Create new VNF Performance Monitoring Job - SUCCESSFUL ... Test title: POST Create a new VNF Performance Monitoring Job - SUCCESSFUL ... Test objective: The objective is to test that the POST method creates a new VNF performance monitoring job and perform the JSON schema validation of the returned job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is successfully created on the VNFM @@ -136,7 +136,7 @@ PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test title: PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ PATCH all VNF Performance Monitoring Jobs - Method not implemented ... Test title: PATCH all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,7 @@ DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test title: DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -172,7 +172,7 @@ GET VNF Performance Monitoring Jobs to get Paged Response ... Test title: GET VNF Performance Monitoring Jobs to get Paged Response ... Test objective: The objective is to test the retrieval of VNF performance monitoring jobs to get Paged response. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -185,7 +185,7 @@ GET VNF Performance Monitoring Jobs for Bad Request Response too big ... Test title: GET VNF Performance Monitoring Jobs for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about VNF Performance Monitoring when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -198,7 +198,7 @@ GET all VNF Performance Monitoring Jobs with exclude_default and fields attribut ... Test title: GET all VNF Performance Monitoring Jobs with exclude_default and fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs with exclude_default and fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_default selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -211,7 +211,7 @@ POST Create new VNF Performance Monitoring Job - UNPROCESSABLE CONTENT ... Test title: POST Create a new VNF Performance Monitoring Job - UNPROCESSABLE CONTENT ... Test objective: The objective is to test that the POST method cannot create a new VNF performance monitoring job when the callback URI provided in the Request body is unreachable by the VNFM. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM cannot reach the Notification endpoint. ... Post-Conditions: none @@ -223,7 +223,7 @@ GET all VNF Performance Monitoring Jobs with permitted authorization scope ... Test title: GET all VNF Performance Monitoring Jobs with permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -235,7 +235,7 @@ GET all VNF Performance Monitoring Jobs with NOT permitted authorization scope ... Test title: GET all VNF Performance Monitoring Jobs with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot index 35acea2c..4516fff1 100644 --- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot @@ -13,7 +13,7 @@ GET All Performance Thresholds ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds and perform a JSON schema validation of the collected thresholds data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Performance Thresholds with attribute-based filter ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Performance Thresholds with invalid attribute-based filter ... Test title: GET Performance Thresholds with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Performance Thresholds with invalid resource endpoint ... Test title: GET Performance Thresholds with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ POST Create new Performance Threshold ... Test title: POST Create new Performance Threshold ... Test objective: The objective is to test that the POST method creates a new VNF performance threshold and perform the JSON schema validation of the returned threshold data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is successfully created on the VNFM @@ -81,7 +81,7 @@ PUT Performance Thresholds - Method not implemented ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Thresholds ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ PATCH Performance Thresholds - Method not implemented ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify VNF Performance Thresholds ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ DELETE Performance Thresholds - Method not implemented ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Thresholds ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ GET Performance Thresholds with Paged Response ... Test title: GET Performance Thresholds with Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds with Paged response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ GET Performance Thresholds for Bad Request Response too big ... Test title: GET Performance Thresholds for Bad Request Response too big ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -143,7 +143,7 @@ POST Create new Performance Threshold - UNPROCESSABLE CONTENT ... Test title: POST Create new Performance Threshold - UNPROCESSABLE CONTENT ... Test objective: The objective is to test that the POST method does not create a new VNF performance threshold when the callback URI provided in the Request body is unreachable by the VNFM. ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM cannot reach the Notification endpoint. ... Post-Conditions: none @@ -155,7 +155,7 @@ POST Create new Performance Threshold with permitted authorization scope ... Test title: POST Create new Performance Threshold with permitted authorization scope ... Test objective: The objective is to test that the POST method creates a new VNF performance threshold and perform the JSON schema validation of the returned threshold data structure when the authorization scope is permitted ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is successfully created on the VNFM @@ -169,7 +169,7 @@ POST Create new Performance Threshold with NOT permitted authorization scope ... Test title: POST Create new Performance Threshold with permitted authorization scope ... Test objective: The objective is to test that the POST method creates a new VNF performance threshold and perform the JSON schema validation of the returned threshold data structure when the authorization scope is not permitted ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is successfully created on the VNFM -- GitLab From 8b020ec2715eaa9a86110ea615f2030dfb390016 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 10:59:17 +0500 Subject: [PATCH 045/141] update test cases of VNFPerformanceManagement as per SOL 002 version 5.1.1 --- .../schemas/PmJob.schema.json | 50 ++++++++++++++++++- .../schemas/PmJobs.schema.json | 50 ++++++++++++++++++- 2 files changed, 96 insertions(+), 4 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json b/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json index 2ababaae..6e805fb6 100644 --- a/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json +++ b/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json @@ -105,8 +105,54 @@ "fileSize": { "description": "The size of the report file in bytes, if known.\n", "type": "integer", - "minimum": 0, - "maximum": 1024 + "minimum": 0 + } + } + }, + "pmJobConnection": { + "description": "An access information and interface information of PM job to monitor the PM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "The MonitoringConnection shall follow the indications. * NOTE:\tThe VNFM can be made aware of monitoring connection information, including their identifiers to \n be used by configuration means outside the scope of the present document (e.g. using relevant NFV-MANO management \n APIs as defined in ETSI GS NFV-SOL 009). \n", + "type": "object", + "required": [ + "id", + "monitoringType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } } } }, diff --git a/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json b/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json index a623a448..ac5d594e 100644 --- a/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json +++ b/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json @@ -107,8 +107,54 @@ "fileSize": { "description": "The size of the report file in bytes, if known.\n", "type": "integer", - "minimum": 0, - "maximum": 1024 + "minimum": 0 + } + } + }, + "pmJobConnection": { + "description": "An access information and interface information of PM job to monitor the PM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "The MonitoringConnection shall follow the indications. * NOTE:\tThe VNFM can be made aware of monitoring connection information, including their identifiers to \n be used by configuration means outside the scope of the present document (e.g. using relevant NFV-MANO management \n APIs as defined in ETSI GS NFV-SOL 009). \n", + "type": "object", + "required": [ + "id", + "monitoringType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } } } }, -- GitLab From f5cf83e84467fbaa33c0663c83b28462d2a493d5 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 12:47:53 +0500 Subject: [PATCH 046/141] add header check for Location as per SOL002 specifications --- SOL002/VNFPerformanceManagement-API/PMJobs.robot | 1 + 1 file changed, 1 insertion(+) diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 0e6f86d2..8cfe2d41 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -128,6 +128,7 @@ POST Create new VNF Performance Monitoring Job - SUCCESSFUL ... Post-Conditions: The VNF Performance Job is successfully created on the VNFM Send Post Request Create new VNF Performance Monitoring Job Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is PmJob Check Postcondition PmJob Exists -- GitLab From 12df539d7454cdb37cd36f264a5b2f57859124fa Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 11:28:56 +0500 Subject: [PATCH 047/141] test different methods of notification endpoint of VNF LCM as per SOL 002 specification version 5.1.1 --- .../NotificationEndpoint.robot | 46 ++++++++++++++++++- .../VNFPerformanceManagementKeywords.robot | 35 +++++++++++++- .../environment/variables.txt | 2 +- 3 files changed, 80 insertions(+), 3 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot b/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot index 78172237..7def3289 100644 --- a/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot @@ -5,6 +5,7 @@ Library JSONLibrary Library OperatingSystem Library String Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Resource VNFPerformanceManagementKeywords.robot Suite Setup Check resource existence and get CallbackUri *** Test Cases *** @@ -31,11 +32,54 @@ VNF Threshold Crossed Notification ... Post-Conditions: none Post VNF Threshold Crossed Notification Check HTTP Response Status Code Is 204 +Test the Notification Endpoint - Successful + [Documentation] Test ID: 6.3.3.10.3 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.3.10.4 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 6.4.9.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.3.10.5 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 6.4.9.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.3.10.6 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 6.4.9.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 *** Keywords *** Check resource existence and get CallbackUri Set Headers {"Accept": "${ACCEPT_JSON}"} - Set Headers {"Version": "${API_VERSION}"} Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} diff --git a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index b4097348..4cb915c8 100644 --- a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -472,4 +472,37 @@ GET Individual VNF Performance Threshold with not permitted authorization scope Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response - Set Suite Variable ${response} ${output} \ No newline at end of file + Set Suite Variable ${response} ${output} +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PUT notification endpoint + Log Trying to perform a PUT. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PATCH notification endpoint + Log Trying to perform a PATCH. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + Log Trying to perform a DELETE. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/environment/variables.txt b/SOL002/VNFPerformanceManagement-API/environment/variables.txt index e641301d..f74d963b 100644 --- a/SOL002/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL002/VNFPerformanceManagement-API/environment/variables.txt @@ -20,7 +20,7 @@ ${PM_JOBS_SCOPE} vnfpm:v1:pm_jobs ${THRESHOLDS_SCOPE} vnfpm:v1:thresholds ${NEG_SCOPE} vnfpm:v1:invalid ${OAUTH_Encryption_ALGORITHM} HS256 -${API_VERSION} 2.12.0 +${API_VERSION} 2.13.0 ${HEADER_TEST_SUPPORTED} 0 -- GitLab From 095f48959d8668c7c1de391b06e137556e654fea Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 23 Jan 2025 10:59:46 +0500 Subject: [PATCH 048/141] Editorial change: Resolve Mojibake --- SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json | 2 +- SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json b/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json index 6e805fb6..91e6f945 100644 --- a/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json +++ b/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json @@ -125,7 +125,7 @@ "type": "string" }, "monitoringType": { - "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "description": "Type of monitoring way. VALUES: \n •\tVIM_CISM\n •\tEXTERNAL\n •\tPAAS\n", "type": "string", "enum": [ "VIM_CISM", diff --git a/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json b/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json index ac5d594e..8a884794 100644 --- a/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json +++ b/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json @@ -127,7 +127,7 @@ "type": "string" }, "monitoringType": { - "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "description": "Type of monitoring way. VALUES: \n •\tVIM_CISM\n •\tEXTERNAL\n •\tPAAS\n", "type": "string", "enum": [ "VIM_CISM", -- GitLab From 3338a5bf22cbedc96409e5d662f76f47da7d0ac5 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 16:55:41 +0500 Subject: [PATCH 049/141] update SOL 002 version in test cases description from 4.5.1 to 5.1.1 --- .../VNFConfiguration-API/Configuration.robot | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/SOL002/VNFConfiguration-API/Configuration.robot b/SOL002/VNFConfiguration-API/Configuration.robot index 93a73a93..2b7feaf5 100644 --- a/SOL002/VNFConfiguration-API/Configuration.robot +++ b/SOL002/VNFConfiguration-API/Configuration.robot @@ -14,7 +14,7 @@ Set new VNF Configuration ... Test title: Set a new VNF Configuration ... Test objective: The objective is to test the creation of a new VNF configuration and perform a JSON schema validation of the returned configuration data structure ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: The configuration is successfully set in the VNF and it matches the issued configuration @@ -30,7 +30,7 @@ Get information about a VNF configuration ... Test title: Get information about a VNF configuration ... Test objective: The objective is to test the retrieval of an existing VNF instance configuration and perform a JSON schema validation of the collected configuration data structure ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ Get information about a VNF configuration with HTTP Etag ... Test title: Get information about a VNF configuration with HTTP Etag ... Test objective: The objective is to test the retrieval of an existing VNF instance configuration, check the generation by the VNF of an HTTP Etag opaque identifier, and perform a JSON schema validation of the collected configuration data structure ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: none @@ -59,7 +59,7 @@ Set new VNF Configuration - HTTP Etag precondition unsuccessful ... Test title: Set a new VNF Configuration - HTTP Etag precondition unsuccessful ... Test objective: The objective is to test the unsuccess in setting a duplication of VNF configuration identified by an already used HTTP Etag identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured (Test ID 6.3.1.1.1) with a given HTTP Etag identifier. - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: The VNF configuration is not modified by the unsuccessful operation and it matches the configuration issued in Test ID 6.3.1.1.1 @@ -73,7 +73,7 @@ POST VNF Configuration - Method not implemented ... Test title: POST VNF Configuration - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF configuration ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ PUT VNF Configuration - Method not implemented ... Test title: PUT VNF Configuration - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing VNF configuration ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ DELETE VNF Configuration - Method not implemented ... Test title: Delete VNF Configuration - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing VNF configuration ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ Set new VNF Configuration With Attribute vnfConfigurationData ... Test title: Set a new VNF Configuration with Attribute vnfConfigurationData ... Test objective: The objective is to test the creation of a new VNF configuration and perform a JSON schema validation of the returned configuration data structure ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: The configuration is successfully set in the VNF and it matches the issued configuration @@ -124,7 +124,7 @@ Set new VNF Configuration With Attribute vnfcConfigurationData ... Test title: Set a new VNF Configuration with Attribute vnfcConfigurationData ... Test objective: The objective is to test the creation of a new VNF configuration and perform a JSON schema validation of the returned configuration data structure ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: The configuration is successfully set in the VNF and it matches the issued configuration @@ -139,7 +139,7 @@ Get information about a VNF configuration with permitted authorization scope ... Test title: Get information about a VNF configuration with permitted authorization scope ... Test objective: The objective is to test the retrieval of an existing VNF instance configuration and perform a JSON schema validation of the collected configuration data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -152,7 +152,7 @@ Get information about a VNF configuration with NOT permitted authorization scope ... Test title: Get information about a VNF configuration with not permitted authorization scope ... Test objective: The objective is to test the retrieval of an existing VNF instance configuration and perform a JSON schema validation of the collected configuration data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none -- GitLab From 6cb9b37ca57ff3a8485ec13922751df4ff64aaa8 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 23 Jan 2025 11:02:52 +0500 Subject: [PATCH 050/141] Editorial Change: Handle Mojibake --- .../schemas/vnfConfigModifications.schema.json | 2 +- .../VNFConfiguration-API/schemas/vnfConfiguration.schema.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL002/VNFConfiguration-API/schemas/vnfConfigModifications.schema.json b/SOL002/VNFConfiguration-API/schemas/vnfConfigModifications.schema.json index cf781bef..30a3ebdc 100644 --- a/SOL002/VNFConfiguration-API/schemas/vnfConfigModifications.schema.json +++ b/SOL002/VNFConfiguration-API/schemas/vnfConfigModifications.schema.json @@ -204,7 +204,7 @@ "description": "Certificates data to be configured or modified into VNFC instance. Shall be present if delegation-mode is used. Otherwise it shall be absent.\n", "type": "array", "items": { - "description": "This type provides input information related to subject of certificate.\nNOTE : Either set of ΓÇ£privatekeyΓÇ¥ and ΓÇ£certificateFileΓÇ¥ or ΓÇ£keystoreFileΓÇ¥ but not both shall be present.\n", + "description": "This type provides input information related to subject of certificate.\nNOTE : Either set of \"privatekey\" and \"certificateFile\" or \"keystoreFile\" but not both shall be present.\n", "type": "object", "properties": { "privateKey": { diff --git a/SOL002/VNFConfiguration-API/schemas/vnfConfiguration.schema.json b/SOL002/VNFConfiguration-API/schemas/vnfConfiguration.schema.json index 2b95e232..7c3e9fe1 100644 --- a/SOL002/VNFConfiguration-API/schemas/vnfConfiguration.schema.json +++ b/SOL002/VNFConfiguration-API/schemas/vnfConfiguration.schema.json @@ -195,7 +195,7 @@ "description": "Certificates data to be configured or modified into VNFC instance. Shall be present if delegation-mode is used. Otherwise it shall be absent.\n", "type": "array", "items": { - "description": "This type provides input information related to subject of certificate.\nNOTE : Either set of ΓÇ£privatekeyΓÇ¥ and ΓÇ£certificateFileΓÇ¥ or ΓÇ£keystoreFileΓÇ¥ but not both shall be present.\n", + "description": "This type provides input information related to subject of certificate.\nNOTE : Either set of \"privatekey\" and \"certificateFile\" or \"keystoreFile\" but not both shall be present.\n", "type": "object", "properties": { "privateKey": { -- GitLab From 02309e11f68c8bf04821343b33a1633839d77109 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 6 Dec 2024 15:59:28 +0500 Subject: [PATCH 051/141] Update SOL003 document version in all testcases of VNF Performance Management API --- .../IndividualPmJob.robot | 22 +++++------ .../IndividualReport.robot | 16 ++++---- .../IndividualThreshold.robot | 22 +++++------ .../NotificationEndpoint.robot | 4 +- .../Notifications.robot | 4 +- .../VNFPerformanceManagement-API/PMJobs.robot | 38 +++++++++---------- .../Thresholds.robot | 26 ++++++------- 7 files changed, 66 insertions(+), 66 deletions(-) diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot index 274cc81a..0cd954c1 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -17,7 +17,7 @@ GET individual VNF Performance Job ... Test title: Get individual VNF Performance Job ... Test objective: The objective is to test the retrieval of an individual VNF performance monitoring job and perform a JSON schema and content validation of the collected job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET individual VNF Performance Job with invalid resource identifier ... Test title: Get individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ DELETE Individual VNF Performance Job ... Test title: Delete Individual VNF Performance Job ... Test objective: The objective is to test the deletion of an individual VNF performance monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is no more available in the VNFM @@ -58,7 +58,7 @@ DELETE Individual VNF Performance Job with invalid resource identifier ... Test title: Delete individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF performance monitoring job fails when using an invalid resource identifier ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -71,7 +71,7 @@ POST Individual VNF Performance Job - Method not implemented ... Test title: POST Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Monitoring Job ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ PUT Individual VNF Performance Job - Method not implemented ... Test title: PUT Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance Monitoring Job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ PATCH Individual VNF Performance Job ... Test title: PATCH Individual VNF Performance Job ... Test objective: The objective is to test that PATCH method allows to modify individual performace management job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -109,7 +109,7 @@ PATCH Individual VNF Performance Job - Precondition failed ... Test title: PATCH Individual VNF Performance Job - Precondition failed ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation @@ -123,7 +123,7 @@ PATCH Individual VNF Performance Job - Unprocessable Content ... Test title: PATCH Individual VNF Performance Job - Unprocessable Content ... Test objective: The objective is to test that PATCH method cannot modify an exsisting individual PM job resource when a request contains syntactically correct data but the data cannot be processed. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -136,7 +136,7 @@ GET individual VNF Performance Job with permitted authorization scope ... Test title: Get individual VNF Performance Job with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF performance monitoring job and perform a JSON schema and content validation of the collected job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ GET individual VNF Performance Job with not permitted authorization scope ... Test title: Get individual VNF Performance Job with not permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF performance monitoring job and perform a JSON schema and content validation of the collected job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot index d97782ce..48ba408a 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot @@ -11,7 +11,7 @@ Get Individual Performance Report ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Individual Performance Report with invalid resource endpoint ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual VNF performance report associated to a monitoring job fails when using an invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ POST Individual Performance Report - Method not implemented ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PUT Individual Performance Report - Method not implemented ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ PATCH Individual Performance Report - Method not implemented ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ DELETE Individual Performance Report - Method not implemented ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing VNF performance report within a monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ Get Individual Performance Report with permitted authorization scope ... Test title: Get Individual Performance Report with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ Get Individual Performance Report with not permitted authorization scope ... Test title: Get Individual Performance Report with not permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot index b698c802..c33f4870 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -17,7 +17,7 @@ GET Individual Threshold ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual VNF performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Individual Threshold with invalid resource identifier ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance threshold fails when using an invalid resource identifier ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ DELETE Individual Threshold ... Test title: DELETE Individual Threshold ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not available anymore in the VNFM @@ -58,7 +58,7 @@ DELETE Individual Threshold with invalid resource identifier ... Test title: DELETE Individual Threshold with invalid resource identifier ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -71,7 +71,7 @@ POST Individual Threshold - Method not implemented ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Threshold ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ PUT Individual Threshold - Method not implemented ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ PATCH Individual Threshold ... Test title: PATCH Individual Threshold ... Test objective: The objective is to test that PATCH method allows to modify an Individual threshold resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -109,7 +109,7 @@ PATCH Individual Threshold - Precondition failed ... Test title: PATCH Individual Threshold - Preconition failed ... Test objective: The objective is to attempt to modify an individual threshold resource, where the precondition was not met. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ PATCH Individual Threshold - Unprocessible Entity ... Test title: PATCH Individual Threshold - Unprocessible Entity ... Test objective: The objective is to test that PATCH method cannot modify an individual threshold resource when a request contains syntactically correct data but the data cannot be processed. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -135,7 +135,7 @@ GET Individual Threshold with permitted authorization scope ... Test title: GET Individual Threshold with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -150,7 +150,7 @@ GET Individual Threshold with not permitted authorization scope ... Test title: GET Individual Threshold with not permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF performance threshold and perform a JSON schema and content validation of the collected threshold data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot b/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot index d8ecc182..3edaf7a7 100644 --- a/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ Performance Information Available Notification ... Test title: Performance Information Available Notification ... Test objective: The objective is to test that the POST request triggers Performance Information Available Notification. ... Pre-conditions: A VNF performance job is created, and a subscription for performance information available notification is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Threshold Crossed Notification ... Test title: Threshold Crossed Notification ... Test objective: The objective is to test that the POST request triggers Threshold Crossed Notification ... Pre-conditions: A VNF performance job is created, and a subscription for threshold crossed notification is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPerformanceManagement-API/Notifications.robot b/SOL003/VNFPerformanceManagement-API/Notifications.robot index e5e6f26c..9e387934 100644 --- a/SOL003/VNFPerformanceManagement-API/Notifications.robot +++ b/SOL003/VNFPerformanceManagement-API/Notifications.robot @@ -16,7 +16,7 @@ VNF Performance Information Availability Notification ... Test title: VNF Performance Information Availability Notification ... Test objective: The objective is to test the dispatch of VNF Performance Information Availability Notification when new VNF performance information is available in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ VNF Threshold Crossed Notification ... Test title: VNF Threshold Crossed Notification ... Test objective: The objective is to test the dispatch of VNF Threshold Crossed Notification when a previously set VNF performance metric threshold is crossed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF performance job is created, and a threshold subscription is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPerformanceManagement-API/PMJobs.robot b/SOL003/VNFPerformanceManagement-API/PMJobs.robot index 8eebbd4b..f4c2a317 100644 --- a/SOL003/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL003/VNFPerformanceManagement-API/PMJobs.robot @@ -18,7 +18,7 @@ GET all VNF Performance Monitoring Jobs ... Test title: GET all VNF Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET VNF Performance Monitoring Jobs with attribute-based filter ... Test title: GET all VNF Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -46,7 +46,7 @@ GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs all_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued all_fileds selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_default selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -88,7 +88,7 @@ GET all VNF Performance Monitoring Jobs with exclude_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -102,7 +102,7 @@ GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test title: GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ GET VNF Performance Monitoring Jobs with invalid resource endpoint ... Test title: GET VNF Performance Monitoring Jobs with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ Create new VNF Performance Monitoring Job ... Test title: Create a new VNF Performance Monitoring Job ... Test objective: The objective is to test the creation of a new VNF performance monitoring job and perform the JSON schema validation of the returned job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is successfully created on the VNFM @@ -141,7 +141,7 @@ PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test title: PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Monitoring Jobs ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ PATCH all VNF Performance Monitoring Jobs - (Method not implemented) ... Test title: PATCH all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF Performance Monitoring Jobs ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -165,7 +165,7 @@ DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test title: DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Monitoring Jobs ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -178,7 +178,7 @@ GET all VNF Performance Monitoring Jobs as Paged Response ... Test title: GET all VNF Performance Monitoring Jobs as Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs as Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF performance jobs resources ... Post-Conditions: none @@ -191,7 +191,7 @@ GET all VNF Performance Monitoring Jobs as Paged Response with nextpage_opauque_ ... Test title: GET all VNF Performance Monitoring Jobs as Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about all the available VNF performance monitoring jobs as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving the available VNF performance monitoring jobs as a paged response has been successfully issued (Test ID 7.3.4.1.13) - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF performance jobs resources ... Post-Conditions: none @@ -203,7 +203,7 @@ GET VNF Performance Monitoring Jobs - Bad Request Response too Big ... Test title: GET VNF Performance Monitoring Jobs - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -216,7 +216,7 @@ GET all VNF Performance Monitoring Jobs with fields and exclude_default attribut ... Test title: GET all VNF Performance Monitoring Jobs with fields and exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs fields and exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of fields and exclude_fields attribute selector ... Post-Conditions: none @@ -230,7 +230,7 @@ POST Create new VNF Performance Monitoring Job - Unprocessable Content ... Test title: POST Create new VNF Performance Monitoring Job - Unprocessable Content ... Test objective: The objective is to test the creation of a new VNF performance monitoring job fails when a request contains syntactically correct data but the data cannot be processed. ... Pre-conditions: none - ... Reference: clause 6.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: clause 6.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -243,7 +243,7 @@ GET all VNF Performance Monitoring Jobs with permitted authorization scope ... Test title: GET all VNF Performance Monitoring Jobs with permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -257,7 +257,7 @@ GET all VNF Performance Monitoring Jobs with not permitted authorization scope ... Test title: GET all VNF Performance Monitoring Jobs with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPerformanceManagement-API/Thresholds.robot b/SOL003/VNFPerformanceManagement-API/Thresholds.robot index 595acf62..422eaa62 100644 --- a/SOL003/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL003/VNFPerformanceManagement-API/Thresholds.robot @@ -17,7 +17,7 @@ GET All Performance Thresholds ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds and perform a JSON schema validation of the collected thresholds data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ GET Performance Thresholds with attribute-based filter ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ GET Performance Thresholds with invalid attribute-based filter ... Test title: GET Performance Thresholds with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET Performance Thresholds with invalid resource endpoint ... Test title: GET Performance Thresholds with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ Create new Performance Threshold ... Test title: Create new Performance Threshold ... Test objective: The objective is to test the creation of a new VNF performance threshold and perform the JSON schema validation of the returned threshold data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is successfully created on the VNFM @@ -84,7 +84,7 @@ PUT Performance Thresholds - Method not implemented ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Thresholds ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNF. - ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -96,7 +96,7 @@ PATCH Performance Thresholds - Method not implemented ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify VNF Performance Thresholds ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -108,7 +108,7 @@ DELETE Performance Thresholds - Method not implemented ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Thresholds ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF performance thresholds are not deleted by the failed operation @@ -121,7 +121,7 @@ GET All Performance Thresholds as Paged Response ... Test title: GET All Performance Thresholds as Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds as a Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -134,7 +134,7 @@ GET Performance Thresholds - Bad Request Response too Big ... Test title: GET Performance Thresholds - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -147,7 +147,7 @@ POST create new Performance Threshold - Unprocessable Content ... Test title: POST create new Performance Threshold - Unprocessable Content ... Test objective: The objective is to test that creation of new VNF performance threshold fails when a request contains syntactically correct data but the data cannot be processed. ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,7 @@ GET All Performance Thresholds with permitted authorization scope ... Test title: GET All Performance Thresholds with permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds and perform a JSON schema validation of the collected thresholds data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -173,7 +173,7 @@ GET All Performance Thresholds with not permitted authorization scope ... Test title: GET All Performance Thresholds with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds and perform a JSON schema validation of the collected thresholds data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 1f35391badf6430139e01539ed0daf0fbf85e99a Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 6 Dec 2024 17:11:18 +0500 Subject: [PATCH 052/141] update VNF PM API to use 'application/merge-patch+json' content-type header for PM job and threshold PATCH requests --- SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot | 2 +- SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot index 0cd954c1..e1f35e86 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -218,7 +218,7 @@ Send Put request for individual VNF Performance Job Send Patch request for individual VNF Performance Job Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/PMJobModifications.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_endpoint=${callback_endpoint} diff --git a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot index c33f4870..8d85035f 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -215,7 +215,7 @@ Send Put request for individual VNF Performance Threshold Send Patch request for individual VNF Performance Threshold Log Trying to PUT threshold Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/ThresholdModifications.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_uri=${callback_endpoint} -- GitLab From 1b8c4c03ec70ef3ba1272117007880d2a80990e3 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 11 Dec 2024 12:36:27 +0500 Subject: [PATCH 053/141] update response body schemas as per SOL 003 version 5.1.1 --- .../schemas/PmJob.schema.json | 185 +++++++++++++----- .../schemas/PmJobModifications.json | 64 ++++-- .../schemas/PmJobs.schema.json | 185 +++++++++++++----- .../schemas/ThresholdModifications.json | 64 ++++-- .../schemas/reports.schema.json | 5 +- 5 files changed, 372 insertions(+), 131 deletions(-) diff --git a/SOL003/VNFPerformanceManagement-API/schemas/PmJob.schema.json b/SOL003/VNFPerformanceManagement-API/schemas/PmJob.schema.json index 46be3313..83d70041 100644 --- a/SOL003/VNFPerformanceManagement-API/schemas/PmJob.schema.json +++ b/SOL003/VNFPerformanceManagement-API/schemas/PmJob.schema.json @@ -1,12 +1,23 @@ { "description": "This type represents a PM job.\n", "type": "object", - "required": ["id", "objectInstanceIds", "criteria"], + "required": [ + "id", + "objectType", + "objectInstanceIds", + "criteria", + "callbackUri", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, + "objectType": { + "description": "Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + }, "objectInstanceIds": { "description": "Identifiers of the VNF instances for which performance information is collected.\n", "type": "array", @@ -15,91 +26,169 @@ "type": "string" } }, + "subObjectInstanceIds": { + "description": "Identifiers of the sub-object instances of the measured object instance for which performance information is requested to be collected. May be present if a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measured object type. If this attribute is present, the cardinality of the \"objectInstanceIds\" attribute shall be 1. If this attribute is absent and a sub-object is defined in clause 6.2 of ETSI GS NFV IFA 027 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, "criteria": { - "description": "Criteria of the collection of performance information.\n", + "description": "This type represents collection criteria for PM jobs.\nNOTE 1:\tAt the end of each reportingPeriod, the API producer will inform the API consumer about availability of the \n performance data collected for each completed collection period during this reportingPeriod. \n The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance \n data for the collection periods within one reporting period are reported together.\nNOTE 2:\tIn particular when choosing short collection and reporting periods, the number of PM jobs that can be supported \n depends on the capability of the producing entity.\n", "type": "object", - "required": ["collectionPeriod", "reportingPeriod"], + "required": [ + "collectionPeriod", + "reportingPeriod" + ], "properties": { "performanceMetric": { - "description": "This defines the types of performance metrics for the specified object instances, as specified in ETSI GS NFV-IFA 027). At least one of the two attributes (performance metric or group) shall be present.\n", + "description": "This defines the types of performance metrics for the specified object instances. Valid values are specified as \"Measurement Name\" values in clause 7.2 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n", "type": "array", - "items": { "type": "string" } + "items": { + "type": "string" + } }, "performanceMetricGroup": { - "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the producer that it can decompose to individual metrics. At least one of the two attributes (performance metric or group) shall be present.\n", + "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the API producer that it can decompose to individual metrics. Valid values are specified as \"Measurement Group\" values in clause 7.2 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n", "type": "array", - "items": { "type": "string" } + "items": { + "type": "string" + } }, "collectionPeriod": { - "description": "Specifies the periodicity at which the producer will collect performance information. The unit shall be seconds. At the end of each reportingPeriod, the 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.\n", - "type": "integer" + "description": "Specifies the periodicity at which the API producer will collect performance information. The unit shall be seconds. See notes 1 and 2.\n", + "type": "integer", + "minimum": 0, + "maximum": 1024 }, "reportingPeriod": { - "description": "Specifies the periodicity at which the producer will report to the consumer. about performance information. The unit shall be seconds. At the end of each reportingPeriod, the 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.\n", - "type": "integer" + "description": "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.\n", + "type": "integer", + "minimum": 0, + "maximum": 1024 }, "reportingBoundary": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", "format": "date-time" } } }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, "reports": { "description": "Information about available reports collected by this PM job.\n", "type": "object", - "required": ["href", "readyTime", "_links"], + "required": [ + "href", + "readyTime" + ], "properties": { "href": { - "description": "The Uri where the report can be obtained.\n", + "description": "The URI where the report can be obtained.\n", "type": "string", "format": "url" }, "readyTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", "format": "date-time" }, "expiryTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", "format": "date-time" }, "fileSize": { "description": "The size of the report file in bytes, if known.\n", - "type": "integer" - }, - "_links": { - "description": "Links for this resource.\n", + "type": "integer", + "minimum": 0 + } + } + }, + "pmJobConnection": { + "description": "An access information and interface information of PM job to monitor the PM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "The MonitoringConnection shall follow the indications provided.\n* NOTE: The VNFM can be made aware of monitoring connection information, \n including their identifiers to be used by configuration means outside the scope of the \n present document (e.g. using relevant NFV-MANO management APIs as defined in \n ETSI GS NFV-SOL 009 [i.18]).\n", + "type": "object", + "required": [ + "id", + "monitoringType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way.\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + } + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["self"], + "required": [ + "href" + ], "properties": { - "self": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of the referenced resource.\n", - "type": "string", - "format": "url" - } - } - }, - "objects": { - "description": "Links to resources representing the VNF instances for which performance information is collected. Shall be present if the VNF instance information is accessible as a resource.\n", - "type": "array", - "items": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of the referenced resource.\n", - "type": "string", - "format": "url" - } - } + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objects": { + "description": "Links to resources representing the measure object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.\n", + "type": "array", + "items": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } } } @@ -107,4 +196,4 @@ } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/schemas/PmJobModifications.json b/SOL003/VNFPerformanceManagement-API/schemas/PmJobModifications.json index bef49980..b7335850 100644 --- a/SOL003/VNFPerformanceManagement-API/schemas/PmJobModifications.json +++ b/SOL003/VNFPerformanceManagement-API/schemas/PmJobModifications.json @@ -3,10 +3,14 @@ "type": "object", "oneOf": [ { - "required": ["callbackUri"] + "required": [ + "callbackUri" + ] }, { - "required": ["authentication"] + "required": [ + "authentication" + ] } ], "properties": { @@ -15,42 +19,70 @@ "type": "string" }, "authentication": { - "description": "* NOTE: The clientId and clientPassword passed in a subscription shall not be the same as the clientId and\n clientPassword that are used to obtain authorization for API requests. Client credentials may differ between\n subscriptions. The value of clientPassword should be generated by a random process\n", + "description": "* NOTE 1 : The clientId and clientPassword passed in a subscription shall not be the same as the clientId and\n clientPassword that are used to obtain authorization for API requests. Client credentials may differ between\n subscriptions. The value of clientPassword should be generated by a random process.\n* NOTE 2: As a less secure alternative to OAUTH2_CLIENT_CERT which uses mutual authentication based on X.509\n certificates, this mode which uses client password to authenticate may be used in the access token request\n toward the authorization server (as defined by IETF RFC 6749 [7]), only to support legacy implementations\n (version 3.4.1 or earlier version of the present document). See clause 8.1 for more details.\n* NOTE 3: The following values that were included up to version 3.4.1 of the present document have been removed:\n \"BASIC\" (to signal the use of the basic HTTP authentication) has been removed because it is insecure.\n \"TLS_CERT\" to signal an alternative non-token based authorization method using TLS certificates has been\n removed because the method is no longer supported.\n* NOTE 4: The client certificate is established by means outside the scope of the present document.\n", "type": "object", - "required": ["authType"], + "required": [ + "authType" + ], "properties": { "authType": { - "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values (see note 3): * OAUTH2_CLIENT_CREDENTIALS: In every\n HTTP request to the notification endpoint, use\n an OAuth 2.0 token, obtained using the client\n credentials grant type after authenticating\n using client identifier and client password\n towards the token endpoint.\n* OAUTH2_CLIENT_CERT: In every HTTP\n request to the notification endpoint, use an\n OAuth 2.0 token, obtained using the client\n credentials grant type after mutually\n authenticating using client identifier and X.509\n certificates towards the token endpoint.\n", "type": "array", "items": { "type": "string", - "enum": ["BASIC", "OAUTH2_CLIENT_CREDENTIALS", "TLS_CERT"] + "enum": [ + "OAUTH2_CLIENT_CREDENTIALS", + "OAUTH2_CLIENT_CERT" + ] } }, - "paramsBasic": { - "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "paramsOauth2ClientCert": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CERT.\nShall be present if authType is \"OAUTH2_CLIENT_CERT\" and the contained information has not been provisioned out of band. \nShall be absent otherwise.\n", "type": "object", + "required": [ + "clientId", + "certificateRef", + "tokenEndpoint" + ], "properties": { - "userName": { - "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. The client identifier is unique in the scope of the tokenEndpoint.\n", "type": "string" }, - "password": { - "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "certificateRef": { + "description": "Fingerprint of the client certificate. The hash function shall use SHA256 or higher. See note 4.\n", + "type": "string", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "value": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + } + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", "type": "string" } } }, "paramsOauth2ClientCredentials": { - "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS.\nShall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band.\nShall be absent otherwise.\nSee note 2.\n", "type": "object", "properties": { "clientId": { - "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. See note.\n", + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. The client identifier is unique in the scope of the tokenEndpoint. Shall be present if it has not been provisioned out of band. See note 1.\n", "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. See note.\n", + "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. See note 1.\n", "type": "string" }, "tokenEndpoint": { @@ -62,4 +94,4 @@ } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/schemas/PmJobs.schema.json b/SOL003/VNFPerformanceManagement-API/schemas/PmJobs.schema.json index 51b03019..29e1f6fe 100644 --- a/SOL003/VNFPerformanceManagement-API/schemas/PmJobs.schema.json +++ b/SOL003/VNFPerformanceManagement-API/schemas/PmJobs.schema.json @@ -3,12 +3,23 @@ "items": { "description": "This type represents a PM job.\n", "type": "object", - "required": ["id", "objectInstanceIds", "criteria"], + "required": [ + "id", + "objectType", + "objectInstanceIds", + "criteria", + "callbackUri", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, + "objectType": { + "description": "Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + }, "objectInstanceIds": { "description": "Identifiers of the VNF instances for which performance information is collected.\n", "type": "array", @@ -17,91 +28,169 @@ "type": "string" } }, + "subObjectInstanceIds": { + "description": "Identifiers of the sub-object instances of the measured object instance for which performance information is requested to be collected. May be present if a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measured object type. If this attribute is present, the cardinality of the \"objectInstanceIds\" attribute shall be 1. If this attribute is absent and a sub-object is defined in clause 6.2 of ETSI GS NFV IFA 027 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, "criteria": { - "description": "Criteria of the collection of performance information.\n", + "description": "This type represents collection criteria for PM jobs.\nNOTE 1:\tAt the end of each reportingPeriod, the API producer will inform the API consumer about availability of the \n performance data collected for each completed collection period during this reportingPeriod. \n The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance \n data for the collection periods within one reporting period are reported together.\nNOTE 2:\tIn particular when choosing short collection and reporting periods, the number of PM jobs that can be supported \n depends on the capability of the producing entity.\n", "type": "object", - "required": ["collectionPeriod", "reportingPeriod"], + "required": [ + "collectionPeriod", + "reportingPeriod" + ], "properties": { "performanceMetric": { - "description": "This defines the types of performance metrics for the specified object instances, as specified in ETSI GS NFV-IFA 027). At least one of the two attributes (performance metric or group) shall be present.\n", + "description": "This defines the types of performance metrics for the specified object instances. Valid values are specified as \"Measurement Name\" values in clause 7.2 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n", "type": "array", - "items": { "type": "string" } + "items": { + "type": "string" + } }, "performanceMetricGroup": { - "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the producer that it can decompose to individual metrics. At least one of the two attributes (performance metric or group) shall be present.\n", + "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the API producer that it can decompose to individual metrics. Valid values are specified as \"Measurement Group\" values in clause 7.2 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n", "type": "array", - "items": { "type": "string" } + "items": { + "type": "string" + } }, "collectionPeriod": { - "description": "Specifies the periodicity at which the producer will collect performance information. The unit shall be seconds. At the end of each reportingPeriod, the 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.\n", - "type": "integer" + "description": "Specifies the periodicity at which the API producer will collect performance information. The unit shall be seconds. See notes 1 and 2.\n", + "type": "integer", + "minimum": 0, + "maximum": 1024 }, "reportingPeriod": { - "description": "Specifies the periodicity at which the producer will report to the consumer. about performance information. The unit shall be seconds. At the end of each reportingPeriod, the 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.\n", - "type": "integer" + "description": "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.\n", + "type": "integer", + "minimum": 0, + "maximum": 1024 }, "reportingBoundary": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", "format": "date-time" } } }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, "reports": { "description": "Information about available reports collected by this PM job.\n", "type": "object", - "required": ["href", "readyTime", "_links"], + "required": [ + "href", + "readyTime" + ], "properties": { "href": { - "description": "The Uri where the report can be obtained.\n", + "description": "The URI where the report can be obtained.\n", "type": "string", "format": "url" }, "readyTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", "format": "date-time" }, "expiryTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", "format": "date-time" }, "fileSize": { "description": "The size of the report file in bytes, if known.\n", - "type": "integer" - }, - "_links": { - "description": "Links for this resource.\n", + "type": "integer", + "minimum": 0 + } + } + }, + "pmJobConnection": { + "description": "An access information and interface information of PM job to monitor the PM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "The MonitoringConnection shall follow the indications provided.\n* NOTE: The VNFM can be made aware of monitoring connection information, \n including their identifiers to be used by configuration means outside the scope of the \n present document (e.g. using relevant NFV-MANO management APIs as defined in \n ETSI GS NFV-SOL 009 [i.18]).\n", + "type": "object", + "required": [ + "id", + "monitoringType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way.\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + } + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["self"], + "required": [ + "href" + ], "properties": { - "self": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of the referenced resource.\n", - "type": "string", - "format": "url" - } - } - }, - "objects": { - "description": "Links to resources representing the VNF instances for which performance information is collected. Shall be present if the VNF instance information is accessible as a resource.\n", - "type": "array", - "items": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of the referenced resource.\n", - "type": "string", - "format": "url" - } - } + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objects": { + "description": "Links to resources representing the measure object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.\n", + "type": "array", + "items": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } } } @@ -110,4 +199,4 @@ } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/schemas/ThresholdModifications.json b/SOL003/VNFPerformanceManagement-API/schemas/ThresholdModifications.json index 7feaabf7..d9eb023c 100644 --- a/SOL003/VNFPerformanceManagement-API/schemas/ThresholdModifications.json +++ b/SOL003/VNFPerformanceManagement-API/schemas/ThresholdModifications.json @@ -3,10 +3,14 @@ "type": "object", "oneOf": [ { - "required": ["callbackUri"] + "required": [ + "callbackUri" + ] }, { - "required": ["authentication"] + "required": [ + "authentication" + ] } ], "properties": { @@ -15,42 +19,70 @@ "type": "string" }, "authentication": { - "description": "* NOTE: The clientId and clientPassword passed in a subscription shall not be the same as the clientId and\n clientPassword that are used to obtain authorization for API requests. Client credentials may differ between\n subscriptions. The value of clientPassword should be generated by a random process\n", + "description": "* NOTE 1 : The clientId and clientPassword passed in a subscription shall not be the same as the clientId and\n clientPassword that are used to obtain authorization for API requests. Client credentials may differ between\n subscriptions. The value of clientPassword should be generated by a random process.\n* NOTE 2: As a less secure alternative to OAUTH2_CLIENT_CERT which uses mutual authentication based on X.509\n certificates, this mode which uses client password to authenticate may be used in the access token request\n toward the authorization server (as defined by IETF RFC 6749 [7]), only to support legacy implementations\n (version 3.4.1 or earlier version of the present document). See clause 8.1 for more details.\n* NOTE 3: The following values that were included up to version 3.4.1 of the present document have been removed:\n \"BASIC\" (to signal the use of the basic HTTP authentication) has been removed because it is insecure.\n \"TLS_CERT\" to signal an alternative non-token based authorization method using TLS certificates has been\n removed because the method is no longer supported.\n* NOTE 4: The client certificate is established by means outside the scope of the present document.\n", "type": "object", - "required": ["authType"], + "required": [ + "authType" + ], "properties": { "authType": { - "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values (see note 3): * OAUTH2_CLIENT_CREDENTIALS: In every\n HTTP request to the notification endpoint, use\n an OAuth 2.0 token, obtained using the client\n credentials grant type after authenticating\n using client identifier and client password\n towards the token endpoint.\n* OAUTH2_CLIENT_CERT: In every HTTP\n request to the notification endpoint, use an\n OAuth 2.0 token, obtained using the client\n credentials grant type after mutually\n authenticating using client identifier and X.509\n certificates towards the token endpoint.\n", "type": "array", "items": { "type": "string", - "enum": ["BASIC", "OAUTH2_CLIENT_CREDENTIALS", "TLS_CERT"] + "enum": [ + "OAUTH2_CLIENT_CREDENTIALS", + "OAUTH2_CLIENT_CERT" + ] } }, - "paramsBasic": { - "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "paramsOauth2ClientCert": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CERT.\nShall be present if authType is \"OAUTH2_CLIENT_CERT\" and the contained information has not been provisioned out of band. \nShall be absent otherwise.\n", "type": "object", + "required": [ + "clientId", + "certificateRef", + "tokenEndpoint" + ], "properties": { - "userName": { - "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. The client identifier is unique in the scope of the tokenEndpoint.\n", "type": "string" }, - "password": { - "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "certificateRef": { + "description": "Fingerprint of the client certificate. The hash function shall use SHA256 or higher. See note 4.\n", + "type": "string", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + }, + "value": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + } + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", "type": "string" } } }, "paramsOauth2ClientCredentials": { - "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS.\nShall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band.\nShall be absent otherwise.\nSee note 2.\n", "type": "object", "properties": { "clientId": { - "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. See note.\n", + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. The client identifier is unique in the scope of the tokenEndpoint. Shall be present if it has not been provisioned out of band. See note 1.\n", "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. See note.\n", + "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. See note 1.\n", "type": "string" }, "tokenEndpoint": { @@ -62,4 +94,4 @@ } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/schemas/reports.schema.json b/SOL003/VNFPerformanceManagement-API/schemas/reports.schema.json index 7a61c8fd..92427768 100644 --- a/SOL003/VNFPerformanceManagement-API/schemas/reports.schema.json +++ b/SOL003/VNFPerformanceManagement-API/schemas/reports.schema.json @@ -21,8 +21,7 @@ "fileSize": { "description": "The size of the report file in bytes, if known.\n", "type": "integer", - "minimum": 0, - "maximum": 1024 + "minimum": 0 } } -} +} \ No newline at end of file -- GitLab From b94128b4b4f4be6a60281cb50f05732d30110333 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 19 Dec 2024 13:55:48 +0500 Subject: [PATCH 054/141] implement check for Location in Response Header --- SOL003/VNFPerformanceManagement-API/PMJobs.robot | 1 + 1 file changed, 1 insertion(+) diff --git a/SOL003/VNFPerformanceManagement-API/PMJobs.robot b/SOL003/VNFPerformanceManagement-API/PMJobs.robot index f4c2a317..ac63d9ba 100644 --- a/SOL003/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL003/VNFPerformanceManagement-API/PMJobs.robot @@ -133,6 +133,7 @@ Create new VNF Performance Monitoring Job ... Post-Conditions: The VNF Performance Job is successfully created on the VNFM Send Post Request Create new VNF Performance Monitoring Job Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is PmJob Check Postcondition PmJob Exists -- GitLab From 5fa089b133ba4cbab4b4c36378066bb434c28414 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 19 Dec 2024 13:57:11 +0500 Subject: [PATCH 055/141] update response code as per SOL 003 version 5.1.1 --- SOL003/VNFPerformanceManagement-API/Thresholds.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFPerformanceManagement-API/Thresholds.robot b/SOL003/VNFPerformanceManagement-API/Thresholds.robot index 422eaa62..001596a1 100644 --- a/SOL003/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL003/VNFPerformanceManagement-API/Thresholds.robot @@ -178,8 +178,8 @@ GET All Performance Thresholds with not permitted authorization scope ... Applicability: none ... Post-Conditions: none GET all Performance Thresholds with not permitted authorization scope - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is Thresholds + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** Create Sessions -- GitLab From 59da462f92e334f07b283d4db18693b97d2a6b6a Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 10:58:25 +0500 Subject: [PATCH 056/141] Fix issue #188: Set version headers --- .../ApiVersion.robot | 10 ++++++++++ .../IndividualPmJob.robot | 12 ++++++++++++ .../IndividualReport.robot | 8 ++++++++ .../IndividualThreshold.robot | 11 +++++++++++ .../NotificationEndpoint.robot | 3 +++ .../VNFPerformanceManagement-API/PMJobs.robot | 18 ++++++++++++++++++ .../Thresholds.robot | 12 ++++++++++++ .../environment/variables.txt | 1 + 8 files changed, 75 insertions(+) diff --git a/SOL003/VNFPerformanceManagement-API/ApiVersion.robot b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot index bdbc3dee..0a38aca1 100644 --- a/SOL003/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot @@ -133,6 +133,7 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -140,6 +141,7 @@ POST API Version GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -147,6 +149,7 @@ GET API Version PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -154,6 +157,7 @@ PUT API Version PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -161,6 +165,7 @@ PATCH API Version DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -168,6 +173,7 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -175,6 +181,7 @@ POST API Version with apiMajorVersion GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -182,6 +189,7 @@ GET API Version with apiMajorVersion PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -189,6 +197,7 @@ PUT API Version with apiMajorVersion PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -196,6 +205,7 @@ PATCH API Version with apiMajorVersion DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response diff --git a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot index e1f35e86..6c0d064b 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -168,6 +168,7 @@ Create Sessions GET individual VNF Performance Job Log Trying to get a Pm Job present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response @@ -176,6 +177,7 @@ GET individual VNF Performance Job GET individual VNF Performance Job with invalid resource identifier Log Trying to perform a negative get, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response @@ -184,6 +186,7 @@ GET individual VNF Performance Job with invalid resource identifier Send Delete request for individual VNF Performance Job Log Trying to delete an existing PM Job Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response @@ -192,6 +195,7 @@ Send Delete request for individual VNF Performance Job Send Delete request for individual VNF Performance Job with invalid resource identifier Log Trying to perform a negative delete, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response @@ -200,6 +204,7 @@ Send Delete request for individual VNF Performance Job with invalid resource ide Send Post request for individual VNF Performance Job Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} ${output}= Output response @@ -208,6 +213,7 @@ Send Post request for individual VNF Performance Job Send Put request for individual VNF Performance Job Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response @@ -219,6 +225,7 @@ Send Put request for individual VNF Performance Job Send Patch request for individual VNF Performance Job Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/PMJobModifications.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_endpoint=${callback_endpoint} @@ -237,6 +244,7 @@ Send Patch request for individual VNF Performance Job - Etag mismatch Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set Headers {"If-Match": "${invalid_etag}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/PMJobModifications.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_endpoint=${callback_endpoint} @@ -247,6 +255,7 @@ Send Patch request for individual VNF Performance Job - Etag mismatch Send Patch request for individual VNF Performance Job with unprocessable content Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/PMJobModifications.json ${body}= Format String ${template} callback_uri=${unreachable_callback_uri} callback_port=${callback_port} callback_endpoint=${callback_endpoint} @@ -259,6 +268,7 @@ GET individual VNF Performance Job with permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${PM_JOBS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response @@ -269,6 +279,7 @@ GET individual VNF Performance Job with not permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${PM_JOBS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response @@ -277,6 +288,7 @@ GET individual VNF Performance Job with not permitted authorization scope Check Postcondition VNF Performance Job is not Created Log Trying to get a new Pm Job Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} ${output}= Output response diff --git a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot index 48ba408a..f6880b15 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot @@ -110,6 +110,7 @@ Get Individual Performance Report with not permitted authorization scope Get Individual Performance Report Log Trying to get a performance report present in the VNFM Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response @@ -118,6 +119,7 @@ Get Individual Performance Report Get Individual Performance Report with invalid resource endpoint Log Trying to get a performance report with invalid resource endpoint Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${erroneousReportId} ${output}= Output response @@ -125,6 +127,7 @@ Get Individual Performance Report with invalid resource endpoint Send Post request for Individual Performance Report Log Trying to create new performance report + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${newReportId} ${output}= Output response @@ -132,6 +135,7 @@ Send Post request for Individual Performance Report Send Put request for Individual Performance Report Log Trying to update performance report + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response @@ -142,6 +146,7 @@ Send Put request for Individual Performance Report Send Patch request for Individual Performance Report Log Trying to update performance report + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response @@ -152,6 +157,7 @@ Send Patch request for Individual Performance Report Send Delete request for Individual Performance Report Log Trying to delete performance report + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response @@ -162,6 +168,7 @@ Get Individual Performance Report with permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${PM_JOBS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response @@ -172,6 +179,7 @@ Get Individual Performance Report with not permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${PM_JOBS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response diff --git a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot index 8d85035f..a7adc7bf 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -167,6 +167,7 @@ Create Sessions GET Individual VNF Performance Threshold Log Trying to get a Threhsold present in the VNFM Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response @@ -175,6 +176,7 @@ GET Individual VNF Performance Threshold GET individual VNF Performance Threshold with invalid resource identifier Log Trying to get a Threhsold with invalid resource endpoint Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${erroneousThresholdId} ${output}= Output response @@ -182,6 +184,7 @@ GET individual VNF Performance Threshold with invalid resource identifier Send Delete request for individual VNF Performance Threshold Log Trying to delete a Threhsold in the VNFM + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response @@ -189,6 +192,7 @@ Send Delete request for individual VNF Performance Threshold Send Delete request for individual VNF Performance Threshold with invalid resource identifier Log Trying to delete a Threhsold in the VNFM with invalid id + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${erroneousThresholdId} ${output}= Output response @@ -196,6 +200,7 @@ Send Delete request for individual VNF Performance Threshold with invalid resour Send Post request for individual VNF Performance Threshold Log Trying to create new threshold + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${newThresholdId} ${output}= Output response @@ -204,6 +209,7 @@ Send Post request for individual VNF Performance Threshold Send Put request for individual VNF Performance Threshold Log Trying to PUT threshold Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${origOutput}= Output response @@ -216,6 +222,7 @@ Send Patch request for individual VNF Performance Threshold Log Trying to PUT threshold Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/ThresholdModifications.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_uri=${callback_endpoint} @@ -235,6 +242,7 @@ Send Patch request for individual VNF Performance Threshold - Etag mismatch Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set Headers {"If-Match": "${invalid_etag}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/ThresholdModifications.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_uri=${callback_endpoint} @@ -246,6 +254,7 @@ Send Patch request for individual VNF Performance Threshold with unprocessable c Log Trying to PATCH threshold Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/ThresholdModifications.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_uri=${callback_endpoint} @@ -258,6 +267,7 @@ GET Individual VNF Performance Threshold with permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${THRESHOLDS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response @@ -268,6 +278,7 @@ GET Individual VNF Performance Threshold with not permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${THRESHOLDS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response diff --git a/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot b/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot index 3edaf7a7..063bc108 100644 --- a/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot @@ -36,6 +36,7 @@ Threshold Crossed Notification Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} Integer response status 200 @@ -52,6 +53,7 @@ Post Performance Information Available Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body} = Get File jsons/PerformanceInformationAvailableNotification.json Post ${callbackResp} ${body} @@ -62,6 +64,7 @@ Post Threshold Crossed Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body} = Get File jsons/ThresholdCrossedNotification.json Post ${callbackResp} ${body} diff --git a/SOL003/VNFPerformanceManagement-API/PMJobs.robot b/SOL003/VNFPerformanceManagement-API/PMJobs.robot index ac63d9ba..28493b2e 100644 --- a/SOL003/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL003/VNFPerformanceManagement-API/PMJobs.robot @@ -275,6 +275,7 @@ Create Sessions GET all VNF Performance Monitoring Jobs Log Trying to get all PM Jobs present in the VNFM Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response @@ -294,6 +295,7 @@ Check HTTP Response Header Contain Link Get all VNF Performance Monitoring Jobs with nextpage_opaque_marker parameter Log Get next page of subscriptions Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query using the URI provided in the previous GET request and validate response Get ${nextPageUri} @@ -303,6 +305,7 @@ Get all VNF Performance Monitoring Jobs with nextpage_opaque_marker parameter GET VNF Performance Monitoring Jobs with attribute-based filter Log Trying to get all PM Jobs present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${POS_FILTER} ${output}= Output response @@ -311,6 +314,7 @@ GET VNF Performance Monitoring Jobs with attribute-based filter GET VNF Performance Monitoring Jobs with all_fields attribute selector Log Trying to get all PM Jobs present in the VNFM, using 'all_fields' filter Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?all_fields ${output}= Output response @@ -319,6 +323,7 @@ GET VNF Performance Monitoring Jobs with all_fields attribute selector GET VNF Performance Monitoring Jobs with exclude_default attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?exclude_default ${output}= Output response @@ -328,6 +333,7 @@ GET VNF Performance Monitoring Jobs with fields attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} ${output}= Output response @@ -337,6 +343,7 @@ GET VNF Performance Monitoring Jobs with fields and exclude_default attribute se Log Trying to get all VNF Packages present in the VNFM, using filter params Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields}&exclude_default ${output}= Output response @@ -346,6 +353,7 @@ GET VNF Performance Monitoring Jobs with exclude_fields attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} ${output}= Output response @@ -354,6 +362,7 @@ GET VNF Performance Monitoring Jobs with exclude_fields attribute selector GET VNF Performance Monitoring Jobs with invalid attribute-based filter Log Trying to get all PM Jobs present in the VNFM, using an erroneous filter param Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${NEG_FILTER} ${output}= Output response @@ -362,6 +371,7 @@ GET VNF Performance Monitoring Jobs with invalid attribute-based filter GET VNF Performance Monitoring Jobs with invalid resource endpoint Log Trying to perform a GET on a erroneous URI Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_job # wrong URI /pm_job instead of /pm_jobs ${output}= Output response @@ -371,6 +381,7 @@ Send Post Request Create new VNF Performance Monitoring Job Log Creating a new PM Job Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/CreatePmJobRequest.json ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${callback_uri} callback_port=${callback_port} callback_endpoint=${callback_endpoint} @@ -388,6 +399,7 @@ Send Post Request Create new VNF Performance Monitoring Job Send PUT Request for all VNF Performance Monitoring Jobs Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response @@ -396,6 +408,7 @@ Send PUT Request for all VNF Performance Monitoring Jobs Send PATCH Request for all VNF Performance Monitoring Jobs Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response @@ -404,6 +417,7 @@ Send PATCH Request for all VNF Performance Monitoring Jobs Send DELETE Request for all VNF Performance Monitoring Jobs Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response @@ -414,6 +428,7 @@ GET all VNF Performance Monitoring Jobs with permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${PM_JOBS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response @@ -424,6 +439,7 @@ GET all VNF Performance Monitoring Jobs with not permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${PM_JOBS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response @@ -436,6 +452,7 @@ Check Postcondition VNF Performance Monitoring Jobs Exist Check Postcondition PmJob Exists Log Checking that Pm Job exists Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${response['body']['id']} ${output}= Output response @@ -524,6 +541,7 @@ Send Post Request for VNF Performance Monitoring Job with unprocessable content Log trying to create a new PM Job Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/CreatePmJobRequest.json ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${unreachable_callback_uri}:${callback_port} diff --git a/SOL003/VNFPerformanceManagement-API/Thresholds.robot b/SOL003/VNFPerformanceManagement-API/Thresholds.robot index 001596a1..4bce008b 100644 --- a/SOL003/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL003/VNFPerformanceManagement-API/Thresholds.robot @@ -190,6 +190,7 @@ Create Sessions GET all Performance Thresholds Log Trying to get all thresholds present in the VNFM Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response @@ -198,6 +199,7 @@ GET all Performance Thresholds GET Performance Thresholds with attribute-based filter Log Trying to get thresholds present in the VNFM with filter Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_OK} ${output}= Output response @@ -206,6 +208,7 @@ GET Performance Thresholds with attribute-based filter GET Performance Thresholds with invalid attribute-based filter Log Trying to get thresholds present in the VNFM with invalid filter Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_KO} ${output}= Output response @@ -214,6 +217,7 @@ GET Performance Thresholds with invalid attribute-based filter GET VNF Performance Thresholds with invalid resource endpoint Log Trying to get thresholds present in the VNFM with invalid resource endpoint Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/threshold ${output}= Output response @@ -221,6 +225,7 @@ GET VNF Performance Thresholds with invalid resource endpoint Send Post Request Create new Performance Threshold Log Creating a new THreshold + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} @@ -232,6 +237,7 @@ Send Post Request Create new Performance Threshold Send Post Request Create new Performance Threshold with unprocessable content Log trying to create a new Threshold + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} @@ -250,6 +256,7 @@ Send Post Request Create new Performance Threshold with unprocessable content Send PUT Request for all Performance Thresholds Log PUT THresholds + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} @@ -259,6 +266,7 @@ Send PUT Request for all Performance Thresholds Send PATCH Request for all Performance Thresholds Log PUT THresholds + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} @@ -268,6 +276,7 @@ Send PATCH Request for all Performance Thresholds Send DELETE Request for all Performance Thresholds Log DELETE THresholds + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response @@ -278,6 +287,7 @@ GET all Performance Thresholds with permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${THRESHOLDS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response @@ -288,6 +298,7 @@ GET all Performance Thresholds with not permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${THRESHOLDS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response @@ -300,6 +311,7 @@ Check Postcondition Thresholds Exist Check Postcondition Threshold Exists Log Checking that Threshold exists Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${response['body']['id']} ${output}= Output response diff --git a/SOL003/VNFPerformanceManagement-API/environment/variables.txt b/SOL003/VNFPerformanceManagement-API/environment/variables.txt index a6358213..4312cfba 100644 --- a/SOL003/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL003/VNFPerformanceManagement-API/environment/variables.txt @@ -23,6 +23,7 @@ ${VNFM_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the F ${apiRoot} / ${apiMajorVersion} v1 ${apiName} vnfpm +${API_VERSION} 2.13.0 ${callback_port} 9091 ${callback_uri} http://172.22.1.7 -- GitLab From 4bd484a54ba87d785188b492f867f501289fc047 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 11:16:47 +0500 Subject: [PATCH 057/141] test different methods of notification endpoint of VNF LCM as per SOL 003 specification version 5.1.1 --- .../NotificationEndpoint.robot | 45 +++++++++++++++++++ .../VNFPerformanceManagementKeywords.robot | 35 ++++++++++++++- 2 files changed, 79 insertions(+), 1 deletion(-) diff --git a/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot b/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot index 063bc108..39aaa97f 100644 --- a/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFPerformanceManagement-API/NotificationEndpoint.robot @@ -3,6 +3,7 @@ Library String Library OperatingSystem Library JSONSchemaLibrary schemas/ Resource environment/variables.txt +Resource VNFPerformanceManagementKeywords.robot Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Suite Setup Check resource existence and get CallbackUri @@ -31,6 +32,50 @@ Threshold Crossed Notification ... Post-Conditions: none Post Threshold Crossed Notification Check HTTP Response Status Code Is 204 +Test the Notification Endpoint - Successful + [Documentation] Test ID: 7.3.4.10.3 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.4.10.4 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 6.4.9.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.4.10.5 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 6.4.9.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.4.10.6 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 6.4.9.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 *** Keywords *** Check resource existence and get CallbackUri diff --git a/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index acdf75c4..a241b397 100644 --- a/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL003/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -40,4 +40,37 @@ Check Notification Endpoint Clear Requests ${callback_endpoint} Check LINK in Header ${linkURL}= Get Value From Json ${response['headers']} $..Link - Should Not Be Empty ${linkURL} \ No newline at end of file + Should Not Be Empty ${linkURL} +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PUT notification endpoint + Log Trying to perform a PUT. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PATCH notification endpoint + Log Trying to perform a PATCH. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + Log Trying to perform a DELETE. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file -- GitLab From a062599ff0a6cc2df49f5b631a1c980807bddbc4 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 6 Dec 2024 16:28:02 +0500 Subject: [PATCH 058/141] Update SOL003 document version in all testcases of VNF Indicator Interface API --- .../IndividualSubscription.robot | 18 +++++------ .../IndividualVNFindicator.robot | 16 +++++----- .../NotificationEndpoint.robot | 4 +-- SOL003/VNFIndicator-API/Notifications.robot | 2 +- SOL003/VNFIndicator-API/Subscriptions.robot | 30 +++++++++---------- SOL003/VNFIndicator-API/VNFIndicators.robot | 30 +++++++++---------- .../VnfIndicatorsInVnfInstanceId.robot | 20 ++++++------- 7 files changed, 60 insertions(+), 60 deletions(-) diff --git a/SOL003/VNFIndicator-API/IndividualSubscription.robot b/SOL003/VNFIndicator-API/IndividualSubscription.robot index 38a99e12..f6901737 100644 --- a/SOL003/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL003/VNFIndicator-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ GET Individual VNF Indicator Subscription ... Test title: GET Individual VNF Indicator Subscription ... Test objective: The objective is to test the retrieval of individual VNF indicator subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET Individual VNF Indicator Subscription with invalid resource identifier ... Test title: GET Individual VNF Indicator Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of individual VNF indicator subscription fails when using an invalid resource identifier. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ DELETE Individual VNF Indicator Subscription ... Test title: DELETE Individual VNF Indicator Subscription ... Test objective: The objective is to test the deletion of an individual VNF indicator subscription. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The subscription to VNF indicators is deleted @@ -50,7 +50,7 @@ DELETE Individual VNF Indicator Subscription with invalid resource identifier ... Test title: DELETE Individual VNF Indicator Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF indicator subscription fails when using an invalid resource identifier. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PUT Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT Individual VNF Indicator Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an individual VNF indicator subscription ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The individual VNF indicator subscription is not modified by the operation @@ -74,7 +74,7 @@ PATCH Individual VNF Indicator Subscription - Method not implemented ... Test title: PATCH Individual VNF Indicator Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an individual VNF indicator subscription ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ POST Individual VNF Indicator Subscription - Method not implemented ... Test title: POST Individual VNF Indicator Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF indicator subscription ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ GET Individual VNF Indicator Subscription with permitted authorization scope ... Test title: GET Individual VNF Indicator Subscription with permitted authorization scope ... Test objective: The objective is to test the retrieval of individual VNF indicator subscription and perform a JSON schema validation of the returned subscription data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ GET Individual VNF Indicator Subscription with not permitted authorization scope ... Test title: GET Individual VNF Indicator Subscription with not permitted authorization scope ... Test objective: The objective is to test the retrieval of individual VNF indicator subscription and perform a JSON schema validation of the returned subscription data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/IndividualVNFindicator.robot b/SOL003/VNFIndicator-API/IndividualVNFindicator.robot index b2760123..1c6a7f47 100644 --- a/SOL003/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL003/VNFIndicator-API/IndividualVNFindicator.robot @@ -10,7 +10,7 @@ Get Individual Indicator for VNF Instance ... Test title: Get Individual Indicator for VNF Instance ... Test objective: The objective is to test the retrieval of an indicator for a given VNF instance and perform a JSON schema validation of the returned indicator data structure ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available in the VNFM. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get Individual Indicator for VNF Instance with invalid indicator identifier ... Test title: Get Individual Indicator for VNF Instance with invalid indicator identifier ... Test objective: The objective is to test that the retrieval of an indicator for a given VNF instance fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available in the VNFM. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ POST Individual VNF Indicator for VNF Instance - Method not implemented ... Test title: POST Individual VNF Indicator for VNF Instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF indicator in the VNFM ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual VNF Indicator for VNF Instance - Method not implemented ... Test title: PUT Individual VNF Indicator for VNF Instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing indicator for a VNF instance ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available in the VNFM - ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual VNF Indicator for VNF Instance - Method not implemented ... Test title: PATCH Individual VNF Indicator for VNF Instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an existing indicator for a VNF instance ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual VNF Indicator for VNF Instance - Method not implemented ... Test title: DELETE Individual VNF Indicator for VNF Instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing indicator for a VNF instance ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available in the VNFM - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ Get Individual Indicator for VNF Instance with permitted authorization scope ... Test title: Get Individual Indicator for VNF Instance with permitted authorization scope ... Test objective: The objective is to test the retrieval of an indicator for a given VNF instance and perform a JSON schema validation of the returned indicator data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available in the VNFM. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ Get Individual Indicator for VNF Instance with not permitted authorization scope ... Test title: Get Individual Indicator for VNF Instance with not permitted authorization scope ... Test objective: The objective is to test the retrieval of an indicator for a given VNF instance and perform a JSON schema validation of the returned indicator data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one measure of VNF indicator is available in the VNFM. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/NotificationEndpoint.robot b/SOL003/VNFIndicator-API/NotificationEndpoint.robot index be9c4de2..9673a6da 100644 --- a/SOL003/VNFIndicator-API/NotificationEndpoint.robot +++ b/SOL003/VNFIndicator-API/NotificationEndpoint.robot @@ -12,7 +12,7 @@ VNF Indicator Value Change Notification ... Test title: VNF Indicator Value Change Notification ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification. ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNFM. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Supported Indicators Change Notification ... Test title: Supported Indicators Change Notification ... Test objective: The objective is to test that the POST request triggers Supported Indicators Change Notification. ... Pre-conditions: A VNF is instantiated, and a individual subscription resource for supported indicators change notifications is available in the VNFM. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/Notifications.robot b/SOL003/VNFIndicator-API/Notifications.robot index 60b4df6d..10732d2a 100644 --- a/SOL003/VNFIndicator-API/Notifications.robot +++ b/SOL003/VNFIndicator-API/Notifications.robot @@ -16,7 +16,7 @@ VNF Indicator Value Change Notification ... Test title: VNF Indicator Value Change Notification ... Test objective: The objective is to test the dispatch of VNF Indicator Value Change Notification when new indicator values are available in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNFM. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/Subscriptions.robot b/SOL003/VNFIndicator-API/Subscriptions.robot index db1194ce..0b43bb32 100644 --- a/SOL003/VNFIndicator-API/Subscriptions.robot +++ b/SOL003/VNFIndicator-API/Subscriptions.robot @@ -16,7 +16,7 @@ GET All VNF Indicator Subscriptions ... Test title: GET All VNF Indicator Subscriptions ... Test objective: The objective is to test the retrieval of all VNF indicator subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ GET VNF Indicator Subscriptions with attribute-based filter ... Test title: GET VNF Indicator Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF indicator subscriptions using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ GET VNF Indicator Subscriptions with invalid attribute-based filter ... Test title: GET VNF Indicator Subscriptions with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF indicator subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET VNF Indicator Subscriptions with invalid resource endpoint ... Test title: GET VNF Indicator Subscriptions with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF indicator subscriptions fails when using invalid resource endpoint. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ Create new VNF indicator subscription ... Test title: Create new VNF indicator subscription ... Test objective: The objective is to test the creation of a new VNF indicator subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF indicator subscription is successfully set and it matches the issued subscription @@ -84,7 +84,7 @@ Create duplicated VNF indicator subscription with VNFM not creating duplicated s ... Test title: Create duplicated VNF indicator subscription with VNFM not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF indicator subscription and check that no new subscription is created by the VNFM and a link to the original subscription is returned ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM does not support the creation of duplicated subscriptions ... Post-Conditions: The existing VNF indicator subscription returned is available in the VNFM @@ -100,7 +100,7 @@ Create duplicated VNF indicator subscription with VNFM creating duplicated subsc ... Test title: Create duplicated VNF indicator subscription with VNFM creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated VNF indicator subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated VNF indicator subscription is successfully set and it matches the issued subscription @@ -115,7 +115,7 @@ PUT VNF Indicator Subscriptions - Method not implemented ... Test title: PUT VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF indicator subscriptions ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ PATCH VNF Indicator Subscriptions - Method not implemented ... Test title: PATCH VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicator subscriptions ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -139,7 +139,7 @@ DELETE VNF Indicator Subscriptions - Method not implemented ... Test title: DELETE VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicators subscriptions ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ GET All VNF Indicator Subscriptions as Paged Response ... Test title: GET All VNF Indicator Subscriptions as Paged Response ... Test objective: The objective is to test the retrieval of all VNF indicator subscriptions as Paged Response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ GET VNF Indicator Subscriptions - Bad Request Response too Big ... Test title: GET VNF Indicator Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF indicator subscriptions fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNFM. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -177,7 +177,7 @@ POST Create a new Subscription - Unprocessable Content ... Test title: POST Create a new Subscription - Unprocessable Content ... Test objective: The objective is to test that content type of the message content is supported and the message content of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -190,7 +190,7 @@ Create new VNF indicator subscription with permitted authorization scope ... Test title: Create new VNF indicator subscription with permitted authorization scope ... Test objective: The objective is to test the creation of a new VNF indicator subscription and perform a JSON schema and content validation of the returned subscription data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF indicator subscription is successfully set and it matches the issued subscription @@ -205,7 +205,7 @@ Create new VNF indicator subscription with not permitted authorization scope ... Test title: Create new VNF indicator subscription with not permitted authorization scope ... Test objective: The objective is to test the creation of a new VNF indicator subscription and perform a JSON schema and content validation of the returned subscription data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF indicator subscription is successfully set and it matches the issued subscription diff --git a/SOL003/VNFIndicator-API/VNFIndicators.robot b/SOL003/VNFIndicator-API/VNFIndicators.robot index 40eb5cf4..921ce57e 100644 --- a/SOL003/VNFIndicator-API/VNFIndicators.robot +++ b/SOL003/VNFIndicator-API/VNFIndicators.robot @@ -11,7 +11,7 @@ Get all VNF Indicators ... Test title: Get all VNF Indicators ... Test objective: The objective is to test the retrieval of all the available VNF indicators and perform a JSON schema validation of the collected indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get VNF Indicators with attribute-based filter ... Test title: Get VNF Indicators with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF indicators using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get VNF Indicators with invalid attribute-based filter ... Test title: Get VNF Indicators with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ Get all VNF Indicators with malformed authorization token ... Test title: Get all VNF Indicators with malformed authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using malformed authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -63,7 +63,7 @@ Get all VNF Indicators without authorization token ... Test title: Get all VNF Indicators without authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when omitting the authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -75,7 +75,7 @@ GET all VNF Indicators with expired or revoked authorization token ... Test title: GET all VNF Indicators with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using expired or revoked authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -87,7 +87,7 @@ Get all VNF Indicators with invalid resource endpoint ... Test title: Get all VNF Indicators with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ POST all VNF Indicators - Method not implemented ... Test title: POST all VNF Indicators - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM - ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PUT all VNF Indicators - Method not implemented ... Test title: PUT all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ PATCH all VNF Indicators - Method not implemented ... Test title: PATCH all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNF - ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -135,7 +135,7 @@ DELETE all VNF Indicators - Method not implemented ... Test title: DELETE all VNF Indicators - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicators ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNF - ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF indicators are not deleted by the unsuccessful operation @@ -148,7 +148,7 @@ Get all VNF Indicators as Paged Response ... Test title: Get all VNF Indicators as Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF indicators as Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -161,7 +161,7 @@ Get VNF Indicators - Bad Request Response too Big ... Test title: Get VNF Indicators - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF indicators fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ Get all VNF Indicators with permitted authorization scope ... Test title: Get all VNF Indicators with permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF indicators and perform a JSON schema validation of the collected indicators data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -187,7 +187,7 @@ Get all VNF Indicators with not permitted authorization scope ... Test title: Get all VNF Indicators with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF indicators and perform a JSON schema validation of the collected indicators data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index 28993eb3..16bfaa15 100644 --- a/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL003/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -11,7 +11,7 @@ Get Indicators for VNF Instance ... Test title: Get Indicators for VNF Instance ... Test objective: The objective is to test the retrieval of all indicators for a given VNF instance and perform a JSON schema validation of the returned indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Indicators for VNF Instance with attribute-based filter ... Test title: GET Indicators for VNF Instance with attribute-based filter ... Test objective: The objective is to test the retrieval of all indicators for a given VNF instance using attribute-based filter and perform a JSON schema validation of the returned indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Get Indicators for VNF Instance with invalid attribute-based filter ... Test title: Get Indicators for VNF Instance with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of all indicators for a given VNF instance fails using invalid attribute-based filter. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ Get Indicators for VNF Instance with invalid resource identifier ... Test title: Get Indicators for VNF Instance with invalid resource identifier ... Test objective: The objective is to test that the retrieval of all indicators for a given VNF instance fails when using invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ POST Indicators for VNF instance - Method not implemented ... Test title: POST Indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new indicators for a VNF instance ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PUT Indicators for VNF instance - Method not implemented ... Test title: PUT Indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing indicators for a VNF instance ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ PATCH Indicators for VNF instance - Method not implemented ... Test title: PATCH Indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing indicators for a VNF instance ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ DELETE Indicators for VNF instance - Method not implemented ... Test title: DELETE Indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete indicators for a VNF instance ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ Get Indicators for VNF Instance as Paged Response ... Test title: Get Indicators for VNF Instance as Paged Response ... Test objective: The objective is to test the retrieval of all indicators for a given VNF instance as Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ Get Indicators for VNF Instance - Bad Request Response too Big ... Test title: Get Indicators for VNF Instance - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of all indicators for a given VNF instance fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF indicators are available in the VNFM for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 38db052bc1bb01c4201458fdf1a82b0df358caf0 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 18 Dec 2024 12:17:34 +0500 Subject: [PATCH 059/141] Editorial Changes: Reformat json schemas --- ...edIndicatorsChangeNotification.schema.json | 20 ++++++--- .../VnfIndicatorSubscription.schema.json | 42 +++++++++++++----- .../VnfIndicatorSubscriptions.schema.json | 44 ++++++++++++++----- ...dicatorValueChangeNotification.schema.json | 19 +++++--- .../schemas/vnfIndicator.schema.json | 20 +++++++-- .../schemas/vnfIndicators.schema.json | 20 +++++++-- 6 files changed, 126 insertions(+), 39 deletions(-) diff --git a/SOL003/VNFIndicator-API/schemas/SupportedIndicatorsChangeNotification.schema.json b/SOL003/VNFIndicator-API/schemas/SupportedIndicatorsChangeNotification.schema.json index 9982d94e..f067ddb2 100644 --- a/SOL003/VNFIndicator-API/schemas/SupportedIndicatorsChangeNotification.schema.json +++ b/SOL003/VNFIndicator-API/schemas/SupportedIndicatorsChangeNotification.schema.json @@ -17,7 +17,9 @@ "notificationType": { "description": "Discriminator for the different notification types. Shall be set to \"SupportedIndicatorsChangeNotification\" for this notification type.\n", "type": "string", - "enum": ["VnfIndicatorValueChangeNotification"] + "enum": [ + "VnfIndicatorValueChangeNotification" + ] }, "subscriptionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -37,7 +39,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfIndicatorId"], + "required": [ + "vnfIndicatorId" + ], "properties": { "vnfIndicatorId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -53,12 +57,16 @@ "_links": { "description": "Links for this resource.\n", "type": "object", - "required": ["subscription"], + "required": [ + "subscription" + ], "properties": { "vnfInstance": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -69,7 +77,9 @@ "subscription": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFIndicator-API/schemas/VnfIndicatorSubscription.schema.json b/SOL003/VNFIndicator-API/schemas/VnfIndicatorSubscription.schema.json index 785c4663..1c0a3018 100644 --- a/SOL003/VNFIndicator-API/schemas/VnfIndicatorSubscription.schema.json +++ b/SOL003/VNFIndicator-API/schemas/VnfIndicatorSubscription.schema.json @@ -1,7 +1,11 @@ { "description": "This type represents a subscription related to notifications about VNF indicator value changes.\n", "type": "object", - "required": ["id", "callbackUri", "_links"], + "required": [ + "id", + "callbackUri", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -18,20 +22,28 @@ { "oneOf": [ { - "required": ["vnfdId"] + "required": [ + "vnfdId" + ] }, { - "required": ["vnfProductsFromProviders"] + "required": [ + "vnfProductsFromProviders" + ] } ] }, { "oneOf": [ { - "required": ["vnfInstanceIds"] + "required": [ + "vnfInstanceIds" + ] }, { - "required": ["vnfInstanceNames"] + "required": [ + "vnfInstanceNames" + ] } ] } @@ -50,7 +62,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProvider"], + "required": [ + "vnfProvider" + ], "properties": { "vnfProvider": { "description": "Name of the VNF provider to match.\n", @@ -61,7 +75,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProductName"], + "required": [ + "vnfProductName" + ], "properties": { "vnfProductName": { "description": "Name of the VNF product to match.\n", @@ -72,7 +88,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfSoftwareVersion"], + "required": [ + "vnfSoftwareVersion" + ], "properties": { "vnfSoftwareVersion": { "description": "A version.\n", @@ -138,12 +156,16 @@ "_links": { "description": "Links for this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json b/SOL003/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json index ec36ca6d..425fe040 100644 --- a/SOL003/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json +++ b/SOL003/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json @@ -3,7 +3,11 @@ "items": { "description": "This type represents a subscription related to notifications about VNF indicator value changes.\n", "type": "object", - "required": ["id", "callbackUri", "_links"], + "required": [ + "id", + "callbackUri", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -20,20 +24,28 @@ { "oneOf": [ { - "required": ["vnfdId"] + "required": [ + "vnfdId" + ] }, { - "required": ["vnfProductsFromProviders"] + "required": [ + "vnfProductsFromProviders" + ] } ] }, { "oneOf": [ { - "required": ["vnfInstanceIds"] + "required": [ + "vnfInstanceIds" + ] }, { - "required": ["vnfInstanceNames"] + "required": [ + "vnfInstanceNames" + ] } ] } @@ -52,7 +64,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProvider"], + "required": [ + "vnfProvider" + ], "properties": { "vnfProvider": { "description": "Name of the VNF provider to match.\n", @@ -63,7 +77,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProductName"], + "required": [ + "vnfProductName" + ], "properties": { "vnfProductName": { "description": "Name of the VNF product to match.\n", @@ -74,7 +90,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfSoftwareVersion"], + "required": [ + "vnfSoftwareVersion" + ], "properties": { "vnfSoftwareVersion": { "description": "A version.\n", @@ -140,12 +158,16 @@ "_links": { "description": "Links for this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -157,4 +179,4 @@ } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFIndicator-API/schemas/VnfIndicatorValueChangeNotification.schema.json b/SOL003/VNFIndicator-API/schemas/VnfIndicatorValueChangeNotification.schema.json index 8cfc37af..5ff2a49e 100644 --- a/SOL003/VNFIndicator-API/schemas/VnfIndicatorValueChangeNotification.schema.json +++ b/SOL003/VNFIndicator-API/schemas/VnfIndicatorValueChangeNotification.schema.json @@ -19,7 +19,9 @@ "notificationType": { "description": "Discriminator for the different notification types. Shall be set to \"VnfIndicatorValueChangeNotification\" for this notification type.\n", "type": "string", - "enum": ["VnfIndicatorValueChangeNotification"] + "enum": [ + "VnfIndicatorValueChangeNotification" + ] }, "subscriptionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -49,12 +51,17 @@ "_links": { "description": "Links for this resource.\n", "type": "object", - "required": ["vnfInstance", "subscription"], + "required": [ + "vnfInstance", + "subscription" + ], "properties": { "vnfInstance": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -65,7 +72,9 @@ "subscription": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -76,4 +85,4 @@ } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFIndicator-API/schemas/vnfIndicator.schema.json b/SOL003/VNFIndicator-API/schemas/vnfIndicator.schema.json index d3da336c..209ea767 100644 --- a/SOL003/VNFIndicator-API/schemas/vnfIndicator.schema.json +++ b/SOL003/VNFIndicator-API/schemas/vnfIndicator.schema.json @@ -1,7 +1,12 @@ { "description": "This type represents a VNF indicator value.\nNOTE:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications.\n", "type": "object", - "required": ["id", "value", "vnfInstanceId", "_links"], + "required": [ + "id", + "value", + "vnfInstanceId", + "_links" + ], "properties": { "id": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -22,12 +27,17 @@ "_links": { "description": "Links for this resource.\n", "type": "object", - "required": ["self", "vnfInstance"], + "required": [ + "self", + "vnfInstance" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -38,7 +48,9 @@ "vnfInstance": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFIndicator-API/schemas/vnfIndicators.schema.json b/SOL003/VNFIndicator-API/schemas/vnfIndicators.schema.json index 5db41b72..f23e3051 100644 --- a/SOL003/VNFIndicator-API/schemas/vnfIndicators.schema.json +++ b/SOL003/VNFIndicator-API/schemas/vnfIndicators.schema.json @@ -3,7 +3,12 @@ "items": { "description": "This type represents a VNF indicator value.\nNOTE:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications.\n", "type": "object", - "required": ["id", "value", "vnfInstanceId", "_links"], + "required": [ + "id", + "value", + "vnfInstanceId", + "_links" + ], "properties": { "id": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -24,12 +29,17 @@ "_links": { "description": "Links for this resource.\n", "type": "object", - "required": ["self", "vnfInstance"], + "required": [ + "self", + "vnfInstance" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -40,7 +50,9 @@ "vnfInstance": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", -- GitLab From f44b6a8e96f10761f16f9b54090de00aa5277a01 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 18 Dec 2024 12:28:09 +0500 Subject: [PATCH 060/141] update response body schema as per SOL 003 version 5.1.1 --- SOL003/VNFIndicator-API/schemas/vnfIndicator.schema.json | 8 ++++++++ SOL003/VNFIndicator-API/schemas/vnfIndicators.schema.json | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/SOL003/VNFIndicator-API/schemas/vnfIndicator.schema.json b/SOL003/VNFIndicator-API/schemas/vnfIndicator.schema.json index 209ea767..ef61569b 100644 --- a/SOL003/VNFIndicator-API/schemas/vnfIndicator.schema.json +++ b/SOL003/VNFIndicator-API/schemas/vnfIndicator.schema.json @@ -24,6 +24,14 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, + "vnfcInstanceIds": { + "description": "The vnfcInstanceIds attribute is optionally present. If present, it contains the list of identifiers of VNFC instances which provide the indicator value(s).\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, "_links": { "description": "Links for this resource.\n", "type": "object", diff --git a/SOL003/VNFIndicator-API/schemas/vnfIndicators.schema.json b/SOL003/VNFIndicator-API/schemas/vnfIndicators.schema.json index f23e3051..d8b95707 100644 --- a/SOL003/VNFIndicator-API/schemas/vnfIndicators.schema.json +++ b/SOL003/VNFIndicator-API/schemas/vnfIndicators.schema.json @@ -26,6 +26,14 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, + "vnfcInstanceIds": { + "description": "The vnfcInstanceIds attribute is optionally present. If present, it contains the list of identifiers of VNFC instances which provide the indicator value(s).\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, "_links": { "description": "Links for this resource.\n", "type": "object", -- GitLab From 53f918e4f2b7e69d457575803e13458a4d4e713e Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 19 Dec 2024 14:24:56 +0500 Subject: [PATCH 061/141] implement check for Location in Response Header --- SOL003/VNFIndicator-API/Subscriptions.robot | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SOL003/VNFIndicator-API/Subscriptions.robot b/SOL003/VNFIndicator-API/Subscriptions.robot index 0b43bb32..d1fe9e0b 100644 --- a/SOL003/VNFIndicator-API/Subscriptions.robot +++ b/SOL003/VNFIndicator-API/Subscriptions.robot @@ -74,6 +74,7 @@ Create new VNF indicator subscription ... Post-Conditions: The VNF indicator subscription is successfully set and it matches the issued subscription Send Post Request for VNF Indicator Subscription Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is VnfIndicatorSubscription Check HTTP Response Body Matches the Subscription Check Postcondition VNF Indicator Subscription Is Set @@ -196,6 +197,7 @@ Create new VNF indicator subscription with permitted authorization scope ... Post-Conditions: The VNF indicator subscription is successfully set and it matches the issued subscription Send Post Request for VNF Indicator Subscription with permitted authorization scope Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is VnfIndicatorSubscription Check HTTP Response Body Matches the Subscription Check Postcondition VNF Indicator Subscription Is Set -- GitLab From f3ab3ee656d2ddadad4980d038158d2a9248caa1 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 12:11:14 +0500 Subject: [PATCH 062/141] Fix issue #188: Set version headers --- SOL003/VNFIndicator-API/ApiVersion.robot | 10 ++++ .../NotificationEndpoint.robot | 3 ++ .../VNFIndicatorsKeywords.robot | 50 +++++++++++++++++++ .../environment/variables.txt | 1 + 4 files changed, 64 insertions(+) diff --git a/SOL003/VNFIndicator-API/ApiVersion.robot b/SOL003/VNFIndicator-API/ApiVersion.robot index 79f57347..d0183912 100644 --- a/SOL003/VNFIndicator-API/ApiVersion.robot +++ b/SOL003/VNFIndicator-API/ApiVersion.robot @@ -133,6 +133,7 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -140,6 +141,7 @@ POST API Version GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -147,6 +149,7 @@ GET API Version PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -154,6 +157,7 @@ PUT API Version PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -161,6 +165,7 @@ PATCH API Version DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -168,6 +173,7 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -175,6 +181,7 @@ POST API Version with apiMajorVersion GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -182,6 +189,7 @@ GET API Version with apiMajorVersion PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -189,6 +197,7 @@ PUT API Version with apiMajorVersion PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -196,6 +205,7 @@ PATCH API Version with apiMajorVersion DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response diff --git a/SOL003/VNFIndicator-API/NotificationEndpoint.robot b/SOL003/VNFIndicator-API/NotificationEndpoint.robot index 9673a6da..62651f2d 100644 --- a/SOL003/VNFIndicator-API/NotificationEndpoint.robot +++ b/SOL003/VNFIndicator-API/NotificationEndpoint.robot @@ -35,6 +35,7 @@ Supported Indicators Change Notification Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 @@ -50,6 +51,7 @@ Post VNF Indicator Value Change Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/VnfIndicatorValueChangeNotification.json ${body}= Format String ${template} subscriptionId=${subscriptionId} indicatorId=${indicatorId} vnfInstanceId=${vnfInstanceId} @@ -61,6 +63,7 @@ Post Supported Indicators Change Notification log Trying to perform a POST for notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/SupportedIndicatorsChangeNotification.json ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} diff --git a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot index 02da02e8..d435d173 100644 --- a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot +++ b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot @@ -14,6 +14,7 @@ Library String Get All VNF Indicators Subscriptions Log Trying to get the list of subscriptions Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response @@ -30,6 +31,7 @@ Get All VNF Indicators Subscriptions Get VNF Indicators Subscriptions with filter Log Trying to get the list of subscriptions using filters Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response @@ -46,6 +48,7 @@ Get VNF Indicators Subscriptions with filter Get VNF Indicators Subscriptions with invalid filter Log Trying to get the list of subscriptions using filters with wrong attribute name Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response @@ -63,6 +66,7 @@ Get VNF Indicators Subscriptions with invalid filter Get VNF Indicators Subscriptions with invalid resource endpoint Log Trying to perform a request on a Uri which doesn't exist Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response @@ -81,6 +85,7 @@ Get VNF Indicators Subscriptions with invalid authentication token Log Trying to perform a negative get, using wrong authorization bearer Pass Execution If ${AUTH_USAGE} == 0 Skipping test as VNFM is not supporting authentication Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -100,6 +105,7 @@ Send Post Request for VNF Indicator Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_endpoint=${callback_endpoint} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Creating mock request and response to handle GET operation on notification endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} @@ -118,6 +124,7 @@ Send Post Request for Duplicated VNF indicator Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_endpoint=${callback_endpoint} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Creating mock request and response to handle GET operation on notification endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} @@ -138,6 +145,7 @@ Send Post Request for VNF Indicator Subscription with permitted authorization sc ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_endpoint=${callback_endpoint} ${scopeValue}= Create Dictionary scopeValue=${INDICATORS_SUBSCRIPTION_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Creating mock request and response to handle GET operation on notification endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} @@ -158,6 +166,7 @@ Send Post Request for VNF Indicator Subscription with not permitted authorizatio ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_endpoint=${callback_endpoint} ${scopeValue}= Create Dictionary scopeValue=${INDICATORS_SUBSCRIPTION_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Creating mock request and response to handle GET operation on notification endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} @@ -173,6 +182,7 @@ Send Post Request for VNF Indicator Subscription with not permitted authorizatio Send Put Request for VNF Indicator Subscriptions Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response @@ -182,6 +192,7 @@ Send Put Request for VNF Indicator Subscriptions Send Patch Request for VNF Indicator Subscriptions Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response @@ -191,6 +202,7 @@ Send Patch Request for VNF Indicator Subscriptions Send Delete Request for VNF Indicator Subscriptions Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response @@ -229,6 +241,7 @@ Check Postcondition VNF Indicator Subscription Is Set Log Check Postcondition subscription exist Log Trying to get the subscription Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If Should Not Be Equal As Strings ${location} Location GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} Run Keyword If Should Be Equal As Strings ${location} Location GET ${response['headers']['Location']} @@ -259,6 +272,7 @@ Check HTTP Response Header Contains Get all VNF indicators Log The GET method queries multiple VNF indicators Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators @@ -269,6 +283,7 @@ Get all VNF indicators Get VNF indicators with filter Log The GET method queries multiple VNF indicators using Attribute-based filtering parameters Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators?${POS_FIELDS} @@ -278,6 +293,7 @@ Get VNF indicators with filter Get VNF indicators with invalid filter Log The GET method queries multiple VNF indicators using invalid Attribute-based filtering parameters Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators?${NEG_FIELDS} @@ -288,6 +304,7 @@ Get all VNF indicators with malformed authorization token Pass Execution If ${AUTH_USAGE} == 0 Skipping test as EM/VNF is not supporting authentication Log The GET method queries multiple VNF indicators using invalid token Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"${AUTHORIZATION_HEADER}": "${BAD_AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators @@ -298,6 +315,7 @@ Get all VNF indicators with expired or revoked authorization token Pass Execution If ${AUTH_USAGE} == 0 Skipping test as EM/VNF is not supporting authentication Log The GET method queries multiple VNF indicators using invalid token Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"${AUTHORIZATION_HEADER}": "${NEG_AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators @@ -316,6 +334,7 @@ Get all VNF indicators without authorization token Get all VNF indicators with invalid resource endpoint Log The GET method queries multiple VNF indicators omitting token Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators @@ -327,6 +346,7 @@ Get all VNF indicators with permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${INDICATORS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators @@ -339,6 +359,7 @@ Get all VNF indicators with not permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${INDICATORS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/indicators @@ -349,6 +370,7 @@ Get all VNF indicators with not permitted authorization scope Send POST Request for all VNF indicators log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response @@ -357,6 +379,7 @@ Send POST Request for all VNF indicators Send PUT Request for all VNF indicators log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response @@ -365,6 +388,7 @@ Send PUT Request for all VNF indicators Send PATCH Request for all VNF indicators log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response @@ -373,6 +397,7 @@ Send PATCH Request for all VNF indicators Send DELETE Request for all VNF indicators log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/indicators ${output}= Output response @@ -393,6 +418,7 @@ Check HTTP Response Body vnfIndicators Matches the requested attribute-based fil Get all indicators for a VNF instance Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response @@ -401,6 +427,7 @@ Get all indicators for a VNF instance Get all indicators for a VNF instance with filter Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}?${POS_FIELDS} ${output}= Output response @@ -409,6 +436,7 @@ Get all indicators for a VNF instance with filter Get all indicators for a VNF instance with invalid filter Log This resource represents VNF indicators related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}?${NEG_FIELDS} ${output}= Output response @@ -417,6 +445,7 @@ Get all indicators for a VNF instance with invalid filter Get all indicators for a VNF instance with invalid resource identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${erroneousVnfInstanceId} ${output}= Output response @@ -425,6 +454,7 @@ Get all indicators for a VNF instance with invalid resource identifier Send POST Request for indicators in VNF instance Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response @@ -433,6 +463,7 @@ Send POST Request for indicators in VNF instance Send PUT Request for indicators in VNF instance Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response @@ -441,6 +472,7 @@ Send PUT Request for indicators in VNF instance Send PATCH Request for indicators in VNF instance Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response @@ -449,6 +481,7 @@ Send PATCH Request for indicators in VNF instance Send DELETE Request for indicators in VNF instance Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId} ${output}= Output response @@ -461,6 +494,7 @@ Check HTTP Response Body Includes Requested VNF Instances ID Get Individual Indicator for a VNF instance Log This resource represents a VNF indicator related to a VNF instance. Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response @@ -469,6 +503,7 @@ Get Individual Indicator for a VNF instance Get Individual Indicator for a VNF instance with invalid indicator identifier Log Trying to perform a negative get, using wrong identifier Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${erroneousIndicatorId} ${output}= Output response @@ -479,6 +514,7 @@ Get Individual Indicator for a VNF instance with permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${INDICATORS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response @@ -489,6 +525,7 @@ Get Individual Indicator for a VNF instance with not permitted authorization sco Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${INDICATORS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response @@ -497,6 +534,7 @@ Get Individual Indicator for a VNF instance with not permitted authorization sco Send POST Request for individual indicator in VNF instance Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${notAllowedIndicatorId} ${output}= Output response @@ -505,6 +543,7 @@ Send POST Request for individual indicator in VNF instance Send PUT Request for individual indicator in VNF instance Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response @@ -513,6 +552,7 @@ Send PUT Request for individual indicator in VNF instance Send PATCH Request for individual indicator in VNF instance Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response @@ -521,6 +561,7 @@ Send PATCH Request for individual indicator in VNF instance Send DELETE Request for individual indicator in VNF instance Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/indicators/${vnfInstanceId}/${indicatorId} ${output}= Output response @@ -543,6 +584,7 @@ Check Postcondition Indicator for VNF instance Exist GET Individual VNF Indicator Subscription Log Trying to get a given subscription identified by subscriptionId Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response @@ -553,6 +595,7 @@ GET Individual VNF Indicator Subscription with permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${INDICATORS_SUBSCRIPTION_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response @@ -563,6 +606,7 @@ GET Individual VNF Indicator Subscription with not permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${INDICATORS_SUBSCRIPTION_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response @@ -571,6 +615,7 @@ GET Individual VNF Indicator Subscription with not permitted authorization scope GET Individual VNF Indicator Subscription with invalid resource identifier Log Trying to perform a request on a subscriptionID which doesn't exist Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response @@ -579,6 +624,7 @@ GET Individual VNF Indicator Subscription with invalid resource identifier Send Delete Request for Individual VNF Indicator Subscription Log Trying to perform a DELETE on a subscriptionId Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response @@ -587,6 +633,7 @@ Send Delete Request for Individual VNF Indicator Subscription Send Delete Request for Individual VNF Indicator Subscription with invalid resource identifier Log Trying to perform a DELETE on a subscriptionId which doesn't exist Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response @@ -594,6 +641,7 @@ Send Delete Request for Individual VNF Indicator Subscription with invalid resou Send Post Request for Individual VNF Indicator Subscription Log Trying to create a new subscription + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response @@ -602,6 +650,7 @@ Send Post Request for Individual VNF Indicator Subscription Send Put Request for Individual VNF Indicator Subscription Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response @@ -612,6 +661,7 @@ Send Put Request for Individual VNF Indicator Subscription Send Patch Request for Individual VNF Indicator Subscription Log Trying to create a new subscription + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response diff --git a/SOL003/VNFIndicator-API/environment/variables.txt b/SOL003/VNFIndicator-API/environment/variables.txt index 443de9cf..d5fb6dd7 100644 --- a/SOL003/VNFIndicator-API/environment/variables.txt +++ b/SOL003/VNFIndicator-API/environment/variables.txt @@ -22,6 +22,7 @@ ${CONTENT_TYPE_JSON} application/json ${apiRoot} / ${apiMajorVersion} v1 ${apiName} vnfind +${API_VERSION} 1.13.0 ${response} -- GitLab From 95b5ca54a6540579dffe74ea70ca39201159c1b8 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 12:16:36 +0500 Subject: [PATCH 063/141] test different methods of notification endpoint of VNF LCM as per SOL 003 specification version 5.1.1 --- .../NotificationEndpoint.robot | 46 ++++++++++++++++++- .../VNFIndicatorsKeywords.robot | 35 +++++++++++++- 2 files changed, 79 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFIndicator-API/NotificationEndpoint.robot b/SOL003/VNFIndicator-API/NotificationEndpoint.robot index 62651f2d..603038a2 100644 --- a/SOL003/VNFIndicator-API/NotificationEndpoint.robot +++ b/SOL003/VNFIndicator-API/NotificationEndpoint.robot @@ -2,6 +2,7 @@ Library String Library JSONSchemaLibrary schemas/ Resource environment/variables.txt +Resource VNFIndicatorsKeywords.robot Library OperatingSystem Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Suite Setup Check resource existence and get CallbackUri @@ -30,7 +31,50 @@ Supported Indicators Change Notification ... Post-Conditions: none Post Supported Indicators Change Notification Check HTTP Response Status Code Is 204 - +Test the Notification Endpoint - Successful + [Documentation] Test ID: 7.3.6.8.3 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 8.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.6.8.4 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 8.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID:7.3.6.8.5 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 8.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.6.8.6 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 8.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 *** Keywords *** Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT_JSON}"} diff --git a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot index d435d173..5e07455c 100644 --- a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot +++ b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot @@ -695,4 +695,37 @@ Check HTTP Response Header Contain Link JWT Encode [Arguments] ${payload} ${key} ${algorithm} ${encoded}= Evaluate jwt.encode(${payload}, ${key}, ${algorithm}) - [Return] ${encoded} \ No newline at end of file + [Return] ${encoded} +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PUT notification endpoint + Log Trying to perform a PUT. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PATCH notification endpoint + Log Trying to perform a PATCH. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + Log Trying to perform a DELETE. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file -- GitLab From c75aa489abc75c28dd70b51d1208d7c8c10567d4 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 12:19:19 +0500 Subject: [PATCH 064/141] Editorial Change: Move Keywords from Notification Endpoint to VNFIndicatorKeywords file --- .../NotificationEndpoint.robot | 41 +------------------ .../VNFIndicatorsKeywords.robot | 35 +++++++++++++++- 2 files changed, 35 insertions(+), 41 deletions(-) diff --git a/SOL003/VNFIndicator-API/NotificationEndpoint.robot b/SOL003/VNFIndicator-API/NotificationEndpoint.robot index 603038a2..c5b9cc81 100644 --- a/SOL003/VNFIndicator-API/NotificationEndpoint.robot +++ b/SOL003/VNFIndicator-API/NotificationEndpoint.robot @@ -74,43 +74,4 @@ DELETE Notification endpoint - Method Not Implemented ... Applicability: none ... Post-Conditions: none DELETE notification endpoint - Check HTTP Response Status Code Is 405 -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Set Headers {"Version": "${API_VERSION}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body VnfIndicatorSubscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post VNF Indicator Value Change Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Set Headers {"Version": "${API_VERSION}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${template} = Get File jsons/VnfIndicatorValueChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} indicatorId=${indicatorId} vnfInstanceId=${vnfInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Supported Indicators Change Notification - log Trying to perform a POST for notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Set Headers {"Version": "${API_VERSION}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${template} = Get File jsons/SupportedIndicatorsChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot index 5e07455c..18003940 100644 --- a/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot +++ b/SOL003/VNFIndicator-API/VNFIndicatorsKeywords.robot @@ -728,4 +728,37 @@ DELETE notification endpoint Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${callbackResp} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Set Global Variable ${response} ${outputResponse} +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body VnfIndicatorSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Post VNF Indicator Value Change Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VnfIndicatorValueChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} indicatorId=${indicatorId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Supported Indicators Change Notification + log Trying to perform a POST for notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/SupportedIndicatorsChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file -- GitLab From 8f738f2658ca3bc6ae367664794a7f921c67ca14 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 6 Dec 2024 16:36:01 +0500 Subject: [PATCH 065/141] Update SOL003 document version in all testcases of VNF Package Management API --- .../IndividualSubscription.robot | 18 ++--- .../IndividualVNFPackage.robot | 28 ++++---- .../IndividualVNFPackageArtifacts.robot | 60 ++++++++-------- .../ManifestInIndividualVNFPackage.robot | 36 +++++----- .../NotificationEndpoint.robot | 4 +- .../Notifications.robot | 6 +- .../Subscriptions.robot | 32 ++++----- .../VNFDInIndividualVNFPackage.robot | 48 ++++++------- .../VNFPackageArtifacts.robot | 68 +++++++++---------- .../VNFPackageContent.robot | 44 ++++++------ .../VNFPackages.robot | 68 +++++++++---------- 11 files changed, 206 insertions(+), 206 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot index b863bb67..b962e2f7 100644 --- a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual VNF Package Subscription ... Test title: GET Individual VNF Package Subscription ... Test objective: The objective is to test the retrieval of individual VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Individual VNF Package Subscription with invalid resource identifier ... Test title: GET Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ DELETE Individual VNF Package Subscription with invalid resource identifier ... Test title: DELETE Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ POST Individual VNF Package Subscription - Method not implemented ... Test title: POST Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Package Subscription ... Pre-conditions: none - ... Reference: Clause 10.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT Individual VNF Package Subscription - Method not implemented ... Test title: PUT Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH Individual VNF Package Subscription - Method not implemented ... Test title: PATCH Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE Individual VNF Package Subscription ... Test title: DELETE Individual VNF Package Subscription ... Test objective: The objective is to test the deletion of an individual VNF package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Subscription is not available anymore in the NFVO @@ -100,7 +100,7 @@ GET Individual VNF Package Subscription with permitted authorization scope ... Test title: GET Individual VNF Package Subscription with permitted authorization scope ... Test objective: The objective is to test the retrieval of individual VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure with permitted authorization scope ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ GET Individual VNF Package Subscription with not permitted authorization scope ... Test title: GET Individual VNF Package Subscription with not permitted authorization scope ... Test objective: The objective is to test the retrieval of individual VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure with not permitted authorization scope ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot index 9bc2b821..8c3873fc 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -12,7 +12,7 @@ GET Individual VNF Package ... Test title: GET Individual VNF Package ... Test objective: The objective is to test the retrieval of an individual VNF package information perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Individual VNF Package with invalid resource identifier ... Test title: GET Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Individual VNF Package - Method not implemented ... Test title: POST Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Individual VNF Package - Method not implemented ... Test title: PUT Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Individual VNF Package - Method not implemented ... Test title: PATCH Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Individual VNF Package - Method not implemented ... Test title: DELETE Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ GET Individual OnBoarded VNF Package ... Test title: GET Individual OnBoarded VNF Package ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package information perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ GET Individual OnBoarded VNF Package with invalid resource identifier ... Test title: GET Individual OnBoarded VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ POST Individual OnBoarded VNF Package - Method not implemented ... Test title: POST Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new OnBoarded VNF Package ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ PUT Individual OnBoarded VNF Package - Method not implemented ... Test title: PUT Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -139,7 +139,7 @@ PATCH Individual OnBoarded VNF Package - Method not implemented ... Test title: PATCH Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ DELETE Individual OnBoarded VNF Package - Method not implemented ... Test title: DELETE Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -163,7 +163,7 @@ GET Individual VNF Package with permitted authorization scope ... Test title: GET Individual VNF Package with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF package information perform a JSON schema validation of the collected data structure with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -178,7 +178,7 @@ GET Individual VNF Package with not permitted authorization scope ... Test title: GET Individual VNF Package with not permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF package information perform a JSON schema validation of the collected data structure with not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot index 67e72ded..f287b5d4 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot @@ -11,7 +11,7 @@ GET Individual VNF Package Artifact ... Test title: GET Individual VNF Package Artifact ... Test objective: The objective is to test the retrieval of an individual VNF package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual VNF Package Artifact in octet stream format ... Test title: GET Individual VNF Package Artifact in octet stream format ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -36,7 +36,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -50,7 +50,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO not supporting R ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package artifact. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -62,7 +62,7 @@ GET Individual VNF Package Artifact with invalid Range Request ... Test title: GET Individual VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -74,7 +74,7 @@ GET Individual VNF Package Artifact with invalid resource identifier ... Test title: GET Individual VNF Package Artifact with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ GET Individual VNF Package Artifact with conflict due to onboarding state ... Test title: GET Individual VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Individual VNF Package Artifact - Method not implemented ... Test title: POST Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ PUT Individual VNF Package Artifact - Method not implemented ... Test title: PUT Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ PATCH Individual VNF Package Artifact - Method not implemented ... Test title: PATCH Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -136,7 +136,7 @@ DELETE Individual VNF Package Artifact - Method not implemented ... Test title: DELETE Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ GET Individual OnBoarded VNF Package Artifact ... Test title: GET Individual OnBoarded VNF Package Artifact ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,7 @@ GET Individual OnBoarded VNF Package Artifact in octet stream format ... Test title: GET Individual OnBoarded VNF Package Artifact in octet stream format ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -173,7 +173,7 @@ GET Individual OnBoarded VNF Package Artifact with Range Request and NFVO suppor ... Test title: GET Individual OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -187,7 +187,7 @@ GET Individual OnBoarded VNF Package Artifact with Range Request and NFVO not su ... Test title: GET Individual OnBoarded VNF Package Artifact with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package artifact. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -199,7 +199,7 @@ GET Individual OnBoarded VNF Package Artifact with invalid Range Request ... Test title: GET Individual OnBoarded VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -211,7 +211,7 @@ GET Individual OnBoarded VNF Package Artifact with invalid resource identifier ... Test title: GET Individual OnBoarded VNF Package Artifact with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -224,7 +224,7 @@ GET Individual OnBoarded VNF Package Artifact with conflict due to onboarding st ... Test title: GET Individual OnBoarded VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -237,7 +237,7 @@ POST Individual OnBoarded VNF Package Artifact - Method not implemented ... Test title: POST Individual OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -249,7 +249,7 @@ PUT Individual OnBoarded VNF Package Artifact - Method not implemented ... Test title: PUT Individual OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -261,7 +261,7 @@ PATCH Individual OnBoarded VNF Package Artifact - Method not implemented ... Test title: PATCH Individual OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -273,7 +273,7 @@ DELETE Individual OnBoarded VNF Package Artifact - Method not implemented ... Test title: DELETE Individual OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -285,7 +285,7 @@ GET Individual VNF Package Artifact with security information ... Test title: GET Individual VNF Package Artifact with security information ... Test objective: The objective is to test the retrieval of an individual VNF package artifact shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -298,7 +298,7 @@ GET Individual OnBoarded VNF Package Artifact with security information ... Test title: GET Individual OnBoarded VNF Package Artifact with security information ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -311,7 +311,7 @@ GET Individual VNF Package Artifact with encrypted artifact ... Test title: GET Individual VNF Package Artifact with encrypted artifact ... Test objective: The objective is to test the retrieval of an individual VNF package artifact shall include an encrypted artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -324,7 +324,7 @@ GET Individual OnBoarded VNF Package Artifact with encrypted artifact ... Test title: GET Individual OnBoarded VNF Package Artifact with encrypted artifact ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package artifact shall include an encrypted artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -337,7 +337,7 @@ GET Individual VNF Package Artifact - Not Acceptable ... Test title: GET Individual VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when related request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -350,7 +350,7 @@ GET Individual OnBoarded VNF Package Artifact - Not Acceptable ... Test title: GET Individual OnBoarded VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package artifact fails when related request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -363,7 +363,7 @@ GET Individual VNF Package Artifact with permitted authorization scope ... Test title: GET Individual VNF Package Artifact with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF package artifact with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -375,7 +375,7 @@ GET Individual VNF Package Artifact with not permitted authorization scope ... Test title: GET Individual VNF Package Artifact with not permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF package artifact with not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot index 69802af7..42010476 100644 --- a/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot @@ -11,7 +11,7 @@ Get Manifest in Individual VNF Package ... Test title: Get Manifest in Individual VNF Package ... Test objective: The objective is to test that the Get request read the content of manifest within a NVF Package and perform a validation that returned content is in plain text format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Manifest in Individual VNF Package with security information ... Test title: Get Manifest in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of manifest for an individual VNF package shall also security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get Manifest in Individual VNF Package - Not acceptable ... Test title: Get Manifest in Individual VNF Package - Not acceptable ... Test objective: The objective is to test that retriveal of the of manifest for an individual VNF package fails when request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ Get Manifest in Individual VNF Package - Conflict ... Test title: Get Manifest in Individual VNF Package - Conflict ... Test objective: The objective is to test that the retrieval of the manifest for an individual VNF package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ POST Manifest in Individual VNF Package - Method not implemented ... Test title: POST Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new resource ... Pre-conditions: none - ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PUT Manifest in Individual VNF Package - Method not implemented ... Test title: PUT Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ PATCH Manifest in Individual VNF Package - Method not implemented ... Test title: PATCH Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ DELETE Manifest in Individual VNF Package - Method not implemented ... Test title: DELETE Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Resource is not deleted by the failed operation @@ -112,7 +112,7 @@ Get Manifest in Individual OnBoarded VNF Package ... Test title: Get Manifest in Individual OnBoarded VNF Package ... Test objective: The objective is to test that the Get request read the content of manifest within a OnBoarded NVF Package and perform a validation that returned content is in plain text format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -125,7 +125,7 @@ Get Manifest in Individual OnBoarded VNF Package with security information ... Test title: Get Manifest in Individual OnBoarded VNF Package with security information ... Test objective: The objective is to test the retrieval of manifest for an individual OnBoarded VNF package shall also security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -138,7 +138,7 @@ Get Manifest in Individual OnBoarded VNF Package - Not acceptable ... Test title: Get Manifest in Individual OnBoarded VNF Package - Not acceptable ... Test objective: The objective is to test that retriveal of the of manifest for an individual OnBoarded VNF package fails when request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ Get Manifest in Individual OnBoarded VNF Package - Conflict ... Test title: Get Manifest in Individual OnBoarded VNF Package - Conflict ... Test objective: The objective is to test that the retrieval of the manifest for an individual OnBoarded VNF package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ POST Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test title: POST Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new resource ... Pre-conditions: none - ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -176,7 +176,7 @@ PUT Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test title: PUT Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -188,7 +188,7 @@ PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test title: PATCH Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -200,7 +200,7 @@ DELETE Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test title: DELETE Manifest in Individual OnBoarded VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete resource ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Resource is not deleted by the failed operation @@ -212,7 +212,7 @@ Get Manifest in Individual VNF Package with permitted authorization scope ... Test title: Get Manifest in Individual VNF Package with permitted authorization scope ... Test objective: The objective is to test that the Get request read the content of manifest within a NVF Package and perform a validation that returned content is in plain text format with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -225,7 +225,7 @@ Get Manifest in Individual VNF Package with not permitted authorization scope ... Test title: Get Manifest in Individual VNF Package with not permitted authorization scope ... Test objective: The objective is to test that the Get request read the content of manifest within a NVF Package and perform a validation that returned content is in plain text format with not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot b/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot index 045ef4e8..5fe43090 100644 --- a/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF Package Onboarding Notification ... Test title: VNF Package Onboarding Notification ... Test objective: The objective is to test that the POST request triggers VNF Package Onboarding notification. ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ VNF Package Change Notification ... Test title: VNF Package Change Notification ... Test objective: The objective is to test that the POST request triggers VNF Package Change notification. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/Notifications.robot b/SOL003/VNFPackageManagement-API/Notifications.robot index 7246889d..bf408bc8 100644 --- a/SOL003/VNFPackageManagement-API/Notifications.robot +++ b/SOL003/VNFPackageManagement-API/Notifications.robot @@ -16,7 +16,7 @@ VNF Package Onboarding Notification ... Test title: VNF Package Onboarding Notification ... Test objective: The objective is to test the dispatch of VNF Package Onboarding notification when the VNF package onboarding operation is successfully completed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ VNF Package Operational State Change Notification ... Test title: VNF Package Operational State Change Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package operational state is modified, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ VNF Package Deletion Notification ... Test title: VNF Package Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package is deleted on the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/Subscriptions.robot b/SOL003/VNFPackageManagement-API/Subscriptions.robot index d2934d6e..965273ab 100644 --- a/SOL003/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL003/VNFPackageManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ Get All VNF Package Subscriptions ... Test title: GET all VNF Package Subscriptions ... Test objective: The objective is to test the retrieval of all VNF package subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Get VNF Package Subscriptions with attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF package subscriptions using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ Get VNF Package Subscriptions with invalid attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filters ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET VNF Package Subscription with invalid resource endpoint ... Test title: GET VNF Package Subscription with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF package subscriptions fails when using invalid resource endpoint. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ Create new VNF Package subscription ... Test title: Create new VNF Package subscription ... Test objective: The objective is to test the creation of a new VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF package subscription is successfully set and it matches the issued subscription @@ -86,7 +86,7 @@ Create duplicated VNF Package subscription with NFVO not creating duplicated sub ... Test title: Create duplicated VNF Package subscription with NFVO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF package subscription and check that no new subscription is created by the NFVO and a link to the original subscription is returned ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing VNF package subscription returned is available in the NFVO @@ -102,7 +102,7 @@ Create duplicated VNF Package subscription with NFVO creating duplicated subscri ... Test title: Create duplicated VNF Package subscription with NFVO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated VNF package subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated VNF package subscription is successfully set and it matches the issued subscription @@ -117,7 +117,7 @@ PUT VNF Package Subscriptions - Method not implemented ... Test title: PUT VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH VNF Package Subscriptions - Method not implemented ... Test title: PATCH VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE VNF Package Subscriptions - Method not implemented ... Test title: DELETE VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ Get All VNF Package Subscriptions as Paged Response ... Test title: GET all VNF Package Subscriptions as Paged Response ... Test objective: The objective is to test the retrieval of all VNF package subscriptions as Paged Response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports response paging for the subscription resources ... Post-Conditions: none @@ -166,7 +166,7 @@ GET All VNF Package Subscriptions as a Paged Response with nextpage_opauque_mark ... Test title: GET All VNF Package Subscriptions as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about all VNF package subscriptions as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving all VNF package subscriptions as a paged response has been successfully issued (Test ID 7.3.3.6.11) - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports response paging for the subscription resources ... Post-Conditions: none @@ -178,7 +178,7 @@ Get VNF Package Subscriptions - Bad Request Response too Big ... Test title: Get VNF Package Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -191,7 +191,7 @@ Get VNF Package Subscriptions - Unprocessable Content ... Test title: Get VNF Package Subscriptions - Unprocessable Content ... Test objective: The objective is to test that content type of the message content is supported and the message content of a request contains syntactically correct data but the data cannot be processed., and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -204,7 +204,7 @@ Create new VNF Package subscription with permitted authorization scope ... Test title: Create new VNF Package subscription with permitted authorization scope ... Test objective: The objective is to test the creation of a new VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF package subscription is successfully set and it matches the issued subscription @@ -219,7 +219,7 @@ Create new VNF Package subscription with not permitted authorization scope ... Test title: Create new VNF Package subscription with not permitted authorization scope ... Test objective: The objective is to test the creation of a new VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF package subscription is successfully set and it matches the issued subscription diff --git a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index 532e4948..3cc49513 100644 --- a/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -11,7 +11,7 @@ Get single file VNFD in Individual VNF Package in Plain Format ... Test title: Get single file VNFD in Individual VNF Package in Plain Format ... Test objective: The objective is to test the retrieval of the VNFD in plain format for an individual VNF package and perform a validation that returned content is in plain format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -24,7 +24,7 @@ Get VNFD in Individual VNF Package in Zip Format ... Test title: Get VNFD in Individual VNF Package in Zip Format ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get single file VNFD in Individual VNF Package in Plain or Zip Format ... Test title: Get single file VNFD in Individual VNF Package in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file VNFD for an individual VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Plain or Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -50,7 +50,7 @@ Get multi file VNFD in Individual VNF Package in Plain or Zip Format ... Test title: Get multi file VNFD in Individual VNF Package in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a multi file ... Post-Conditions: none @@ -74,7 +74,7 @@ Get VNFD in Individual VNF Package with invalid resource identifier ... Test title: Get VNFD in Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF package content fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ Get VNFD in Individual VNF Package Content with conflict due to onboarding state ... Test title: Get VNFD in Individual VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ POST VNFD in Individual VNF Package Content - Method not implemented ... Test title: POST VNFD in Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNFD ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PUT VNFD in Individual VNF Package Content - Method not implemented ... Test title: PUT VNFD in Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ PATCH VNFD in Individual VNF Package Content - Method not implemented ... Test title: PATCH VNFD in Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -135,7 +135,7 @@ DELETE VNFD in Individual VNF Package Content - Method not implemented ... Test title: DELETE VNFD in Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -147,7 +147,7 @@ Get single file VNFD in Individual OnBoarded VNF Package in Plain Format ... Test title: Get single file VNFD in Individual OnBoarded VNF Package in Plain Format ... Test objective: The objective is to test the retrieval of the VNFD in plain format for an individual OnBoarded VNF package and perform a validation that returned content is in plain format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -160,7 +160,7 @@ Get VNFD in Individual OnBoarded VNF Package in Zip Format ... Test title: Get VNFD in Individual OnBoarded VNF Package in Zip Format ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual OnBoarded VNF package and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -173,7 +173,7 @@ Get single file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format ... Test title: Get single file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file VNFD for an individual OnBoarded VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Plain or Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -186,7 +186,7 @@ Get multi file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format ... Test title: Get multi file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual OnBoarded VNF package when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a multi file ... Post-Conditions: none @@ -210,7 +210,7 @@ Get VNFD in Individual OnBoarded VNF Package with invalid resource identifier ... Test title: Get VNFD in Individual OnBoarded VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the VNFD for an individual OnBoarded VNF package content fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -222,7 +222,7 @@ Get VNFD in Individual OnBoarded VNF Package Content with conflict due to onboar ... Test title: Get VNFD in Individual OnBoarded VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the VNFD for an individual OnBoarded VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -235,7 +235,7 @@ POST VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test title: POST VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNFD ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -247,7 +247,7 @@ PUT VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test title: PUT VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -259,7 +259,7 @@ PATCH VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test title: PATCH VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -271,7 +271,7 @@ DELETE VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test title: DELETE VNFD in Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -283,7 +283,7 @@ Get multi file VNFD in Individual VNF Package with security information ... Test title: Get multi file VNFD in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a multi file ... Post-Conditions: none @@ -296,7 +296,7 @@ Get multi file VNFD in Individual OnBoarded VNF Package with security informatio ... Test title: Get multi file VNFD in Individual OnBoarded VNF Package with security information ... Test objective: The objective is to test the retrieval of the multi file VNFD for an individual OnBoarded VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a multi file ... Post-Conditions: none @@ -309,7 +309,7 @@ Get single file VNFD in Individual VNF Package in Plain Format with permitted au ... Test title: Get single file VNFD in Individual VNF Package in Plain Format with permitted authorization scope ... Test objective: The objective is to test the retrieval of the VNFD in plain format for an individual VNF package and perform a validation that returned content is in plain format with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none @@ -322,7 +322,7 @@ Get single file VNFD in Individual VNF Package in Plain Format with not permitte ... Test title: Get single file VNFD in Individual VNF Package in Plain Format with not permitted authorization scope ... Test objective: The objective is to test the retrieval of the VNFD in plain format for an individual VNF package and perform a validation that returned content is in plain format with not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFD is implemented as a single file ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot index b221a9b0..76c1e1a6 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -11,7 +11,7 @@ Get VNF Package Artifact ... Test title: Get VNF Package Artifact ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test title: Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test title: Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test title: Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ Get VNF Package Artifact with "include_signatures" parameter ... Test title: Get VNF Package Artifact with "include_signatures" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ Get VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test title: Get VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the GET request read the whole content of the archive containing the artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -90,7 +90,7 @@ Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artif ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artif ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ Get VNF Package Artifact with invalid URI parameters undifend select_non_mano_ar ... Test title: Get VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ Get VNF Package Artifact with conflict due to onboarding state ... Test title: Get VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ GET VNF Package Artifact with invalid Range Request ... Test title: GET VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -154,7 +154,7 @@ POST VNF Package Artifact - Method not implemented ... Test title: POST VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -166,7 +166,7 @@ PUT VNF Package Artifact - Method not implemented ... Test title: PUT VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -178,7 +178,7 @@ PATCH VNF Package Artifact - Method not implemented ... Test title: PATCH VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -190,7 +190,7 @@ DELETE VNF Package Artifact - Method not implemented ... Test title: DELETE VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -202,7 +202,7 @@ Get OnBoarded VNF Package Artifact ... Test title: Get OnBoarded VNF Package Artifact ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package Artifact files successfully, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -215,7 +215,7 @@ Get OnBoarded VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test title: Get OnBoarded VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package Artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -228,7 +228,7 @@ Get OnBoarded VNF Package Artifact with "exclude_all_non_mano_artifacts" paramet ... Test title: Get OnBoarded VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -241,7 +241,7 @@ Get OnBoarded VNF Package Artifact with "select_non_mano_artifact_sets" paramete ... Test title: Get OnBoarded VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -254,7 +254,7 @@ Get OnBoarded VNF Package Artifact with "include_signatures" parameter ... Test title: Get OnBoarded VNF Package Artifact with "include_signatures" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -267,7 +267,7 @@ Get OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range ... Test title: Get OnBoarded VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the GET request read the whole content of the archive containing the OnBoarded VNF Package artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -281,7 +281,7 @@ Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_ ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -294,7 +294,7 @@ Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_ ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -307,7 +307,7 @@ Get OnBoarded VNF Package Artifact with invalid URI parameters undifend select_n ... Test title: Get OnBoarded VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -320,7 +320,7 @@ Get OnBoarded VNF Package Artifact with conflict due to onboarding state ... Test title: Get OnBoarded VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -333,7 +333,7 @@ GET OnBoarded VNF Package Artifact with invalid Range Request ... Test title: GET OnBoarded VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the OnBoarded VNF Package artifact files fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -345,7 +345,7 @@ POST OnBoarded VNF Package Artifact - Method not implemented ... Test title: POST OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -357,7 +357,7 @@ PUT OnBoarded VNF Package Artifact - Method not implemented ... Test title: PUT OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -369,7 +369,7 @@ PATCH OnBoarded VNF Package Artifact - Method not implemented ... Test title: PATCH OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -381,7 +381,7 @@ DELETE OnBoarded VNF Package Artifact - Method not implemented ... Test title: DELETE OnBoarded VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -393,7 +393,7 @@ Get VNF Package Artifact with "include_external_artifacts" parameter ... Test title: Get VNF Package Artifact with "include_external_artifacts" parameter ... Test objective: The objective is to test that GET request reads the whole content of the archive containing the external artifacts successfully when requested with "include_external_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -406,7 +406,7 @@ Get OnBoarded VNF Package Artifact with "include_external_artifacts" parameter ... Test title: Get OnBoarded VNF Package Artifact with "include_external_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the external OnBoarded VNF Package Artifacts successfully when requested with "include_external_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -419,7 +419,7 @@ Get VNF Package Artifact with permitted authorization scope ... Test title: Get VNF Package Artifact with permitted authorization scope ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -432,7 +432,7 @@ Get VNF Package Artifact with not permitted authorization scope ... Test title: Get VNF Package Artifact with not permitted authorization scope ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format with not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot index 6b07244a..451b799d 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageContent.robot @@ -11,7 +11,7 @@ GET Individual VNF Package Content ... Test title: GET Individual VNF Package Content ... Test objective: The objective is to test the retrieval of an individual VNF package content and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET Individual VNF Package Content with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Individual VNF Package Content with Range Request and NFVO not supporting Ra ... Test title: GET Individual VNF Package Content with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Individual VNF Package Content with invalid Range Request ... Test title: GET Individual VNF Package Content with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -64,7 +64,7 @@ GET Individual VNF Package Content with invalid resource identifier ... Test title: GET Individual VNF Package Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ GET Individual VNF Package Content with conflict due to onboarding state ... Test title: GET Individual VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ POST Individual VNF Package Content - Method not implemented ... Test title: POST Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package content ... Pre-conditions: none - ... Reference: Clause 10.4.3.5.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.5.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ PUT Individual VNF Package Content - Method not implemented ... Test title: PUT Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.5.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -114,7 +114,7 @@ PATCH Individual VNF Package Content - Method not implemented ... Test title: PATCH Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.5.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ DELETE Individual VNF Package Content - Method not implemented ... Test title: DELETE Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.5.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -138,7 +138,7 @@ GET Individual OnBoarded VNF Package Content ... Test title: GET Individual OnBoarded VNF Package Content ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package content and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ GET Individual OnBoarded VNF Package Content with Range Request and NFVO support ... Test title: GET Individual OnBoarded VNF Package Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual OnBoarded VNF package content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -166,7 +166,7 @@ GET Individual OnBoarded VNF Package Content with Range Request and NFVO not sup ... Test title: GET Individual OnBoarded VNF Package Content with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -179,7 +179,7 @@ GET Individual OnBoarded VNF Package Content with invalid Range Request ... Test title: GET Individual OnBoarded VNF Package Content with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package content fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -191,7 +191,7 @@ GET Individual OnBoarded VNF Package Content with invalid resource identifier ... Test title: GET Individual OnBoarded VNF Package Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual OnBoarded VNF package content fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -203,7 +203,7 @@ GET Individual OnBoarded VNF Package Content with conflict due to onboarding sta ... Test title: GET Individual OnBoarded VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -216,7 +216,7 @@ POST Individual OnBoarded VNF Package Content - Method not implemented ... Test title: POST Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package content ... Pre-conditions: none - ... Reference: Clause 10.4.3.5.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.5.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -228,7 +228,7 @@ PUT Individual OnBoarded VNF Package Content - Method not implemented ... Test title: PUT Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.5.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -240,7 +240,7 @@ PATCH Individual OnBoarded VNF Package Content - Method not implemented ... Test title: PATCH Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.5.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -252,7 +252,7 @@ DELETE Individual OnBoarded VNF Package Content - Method not implemented ... Test title: DELETE Individual OnBoarded VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.3.5.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.3.5.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -264,7 +264,7 @@ GET Individual VNF Package Content with permitted authorization scope ... Test title: GET Individual VNF Package Content with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF package content and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -277,7 +277,7 @@ GET Individual VNF Package Content with not permitted authorization scope ... Test title: GET Individual VNF Package Content with not permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF package content and perform a validation that returned content is in zip format with not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFPackageManagement-API/VNFPackages.robot b/SOL003/VNFPackageManagement-API/VNFPackages.robot index 55745e04..96625e24 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackages.robot @@ -11,7 +11,7 @@ GET all VNF Packages ... Test title: GET all VNF Packages ... Test objective: The objective is to test the retrieval of all the available VNF packages information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET VNF Packages with attribute-based filter ... Test title: GET VNF Packages with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF packages using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET VNF Packages with invalid attribute-based filter ... Test title: GET VNF Packages with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET VNF Packages with "all_fields" attribute selector ... Test title: GET VNF Packages with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ GET VNF Packages with "exclude_default" attribute selector ... Test title: GET VNF Packages with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ GET VNF Packages with "fields" attribute selector ... Test title: GET VNF Packages with fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none @@ -96,7 +96,7 @@ GET VNF Packages with "exclude_fields" attribute selector ... Test title: GET VNF Packages with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -110,7 +110,7 @@ GET all VNF Packages with invalid resource endpoint ... Test title: GET VNF Packages with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid resource endpoint ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ POST all VNF Packages - Method not implemented ... Test title: POST all VNF Packages - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Packages ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -134,7 +134,7 @@ PUT all VNF Packages - Method not implemented ... Test title: PUT all VNF Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -146,7 +146,7 @@ PATCH all VNF Packages - Method not implemented ... Test title: PATCH all VNF Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -158,7 +158,7 @@ DELETE all VNF Packages - Method not implemented ... Test title: DELETE all VNF Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -170,7 +170,7 @@ GET all VNF Packages as a Paged Response ... Test title: GET all VNF Packages as a Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF packages information as a Paged Response. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports response paging for the VNF package resources ... Post-Conditions: none @@ -183,7 +183,7 @@ GET all VNF Packages as a Paged Response with nextpage_opauque_marker parameter ... Test title: GET all VNF Packages as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about all VNF packages as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving all VNF packages as a paged response has been successfully issued (Test ID 7.3.3.1.13) - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports response paging for the VNF package resources ... Post-Conditions: none @@ -196,7 +196,7 @@ GET VNF Packages - Bad Request Response too Big ... Test title: GET VNF Packages - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF packages fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -209,7 +209,7 @@ GET all OnBoarded VNF Packages ... Test title: GET all OnBoarded VNF Packages ... Test objective: The objective is to test the retrieval of all the available onboarded VNF packages information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -225,7 +225,7 @@ GET OnBoarded VNF Packages with attribute-based filter ... Test title: GET OnBoarded VNF Packages with attribute-based filter ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -239,7 +239,7 @@ GET OnBoarded VNF Packages with invalid attribute-based filter ... Test title: GET OnBoarded VNF Packages with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of OnBoarded VNF packages fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -252,7 +252,7 @@ GET OnBoarded VNF Packages with "all_fields" attribute selector ... Test title: GET OnBoarded VNF Packages with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -266,7 +266,7 @@ GET OnBoarded VNF Packages with "exclude_default" attribute selector ... Test title: GET OnBoarded VNF Packages with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -280,7 +280,7 @@ GET OnBoarded VNF Packages with "fields" attribute selector ... Test title: GET OnBoarded VNF Packages with fields attribute selector ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none @@ -294,7 +294,7 @@ GET OnBoarded VNF Packages with "exclude_fields" attribute selector ... Test title: GET OnBoarded VNF Packages with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -308,7 +308,7 @@ GET all OnBoarded VNF Packages with invalid resource endpoint ... Test title: GET OnBoarded VNF Packages with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of OnBoarded VNF packages fails when using invalid resource endpoint ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -320,7 +320,7 @@ POST all OnBoarded VNF Packages - Method not implemented ... Test title: POST all OnBoarded VNF Packages - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new OnBoarded VNF Packages ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -332,7 +332,7 @@ PUT all OnBoarded VNF Packages - Method not implemented ... Test title: PUT all OnBoarded VNF Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing OnBoarded VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -344,7 +344,7 @@ PATCH all OnBoarded VNF Packages - Method not implemented ... Test title: PATCH all OnBoarded VNF Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing OnBoarded VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -356,7 +356,7 @@ DELETE all OnBoarded VNF Packages - Method not implemented ... Test title: DELETE all OnBoarded VNF Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete existing OnBoarded VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -368,7 +368,7 @@ GET all OnBoarded VNF Packages as a Paged Response ... Test title: GET all OnBoarded VNF Packages as a Paged Response ... Test objective: The objective is to test the retrieval of all the available OnBoarded VNF packages information as a Paged Response. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports response paging for the VNF package resources ... Post-Conditions: none @@ -381,7 +381,7 @@ GET all OnBoarded VNF Packages as a Paged Response with nextpage_opauque_marker ... Test title: GET all OnBoarded VNF Packages as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about all onBoarded VNF packages as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving all onBoarded VNF packages as a paged response has been successfully issued (Test ID 7.3.3.1.27) - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports response paging for the VNF package resources ... Post-Conditions: none @@ -394,7 +394,7 @@ GET OnBoarded VNF Packages - Bad Request Response too Big ... Test title: GET OnBoarded VNF Packages - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of OnBoarded VNF packages fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -407,7 +407,7 @@ GET VNF Packages with "fields" and "exclude_default" attribute selector ... Test title: GET VNF Packages with fields and exclude_default attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "fields" and "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none @@ -421,7 +421,7 @@ GET OnBoarded VNF Packages with "fields" and "exclude_default" attribute selecto ... Test title: GET OnBoarded VNF Packages with fields and exclude_default attribute selector ... Test objective: The objective is to test the retrieval of OnBoarded VNF packages with "fields" and "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none @@ -435,7 +435,7 @@ GET all VNF Packages with permitted authorization scope ... Test title: GET all VNF Packages with permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF packages information and perform a JSON schema and content validation of the collected data structure with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -451,7 +451,7 @@ GET all VNF Packages with not permitted authorization scope ... Test title: GET all VNF Packages with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF packages information and perform a JSON schema and content validation of the collected data structure with not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 440995c7d799633a9200148da6f3e698b8cb6cb8 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 18 Dec 2024 16:44:42 +0500 Subject: [PATCH 066/141] Editorial Change: Reformat Document --- .../schemas/PkgmSubscription.schema.json | 48 ++++++++++--- .../schemas/PkgmSubscriptions.schema.json | 50 ++++++++++---- .../VnfPackageChangeNotification.schema.json | 33 ++++++--- ...fPackageOnboardingNotification.schema.json | 21 ++++-- .../schemas/additionalArtifacts.schema.json | 12 +++- .../schemas/links.schema.json | 19 ++++-- .../schemas/softwareImage.schema.json | 10 ++- .../schemas/vnfPkgInfo.schema.json | 67 +++++++++++++++---- .../schemas/vnfPkgsInfo.schema.json | 67 +++++++++++++++---- 9 files changed, 259 insertions(+), 68 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/schemas/PkgmSubscription.schema.json b/SOL003/VNFPackageManagement-API/schemas/PkgmSubscription.schema.json index d7b80736..d28156ca 100644 --- a/SOL003/VNFPackageManagement-API/schemas/PkgmSubscription.schema.json +++ b/SOL003/VNFPackageManagement-API/schemas/PkgmSubscription.schema.json @@ -1,7 +1,11 @@ { "description": "This type represents a subscription related to notifications about VNF package management.\n", "type": "object", - "required": ["id", "callbackUri", "_links"], + "required": [ + "id", + "callbackUri", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -14,13 +18,19 @@ { "oneOf": [ { - "required": ["vnfProductsFromProviders"] + "required": [ + "vnfProductsFromProviders" + ] }, { - "required": ["vnfdId"] + "required": [ + "vnfdId" + ] }, { - "required": ["vnfPkgId"] + "required": [ + "vnfPkgId" + ] } ] } @@ -42,7 +52,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProvider"], + "required": [ + "vnfProvider" + ], "properties": { "vnfProvider": { "description": "A string defined in IETF RFC 8259.\n", @@ -53,7 +65,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProductName"], + "required": [ + "vnfProductName" + ], "properties": { "vnfProductName": { "description": "A string defined in IETF RFC 8259.\n", @@ -64,7 +78,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfSoftwareVersion"], + "required": [ + "vnfSoftwareVersion" + ], "properties": { "vnfSoftwareVersion": { "description": "A version.\n", @@ -106,12 +122,18 @@ "operationalState": { "description": "- ENABLED: The VNF package is enabled, i.e. it can be used for\n the creation of new \"Individual VNF instance\" resources.\n- DISABLED: The VNF package is disabled, i.e. it shall not be used for\n the creation of further \"Individual VNF instance\" resources\n (unless and until the VNF package is re-enabled).\n", "type": "string", - "enum": ["ENABLED", "DISABLED"] + "enum": [ + "ENABLED", + "DISABLED" + ] }, "usageState": { "description": "- IN_USE: \"Individual VNF instance\" resources created from this VNF package exist. - NOT_IN_USE: No \"Individual VNF instance\" resource created from this VNF package exists.\n", "type": "string", - "enum": ["IN_USE", "NOT_IN_USE"] + "enum": [ + "IN_USE", + "NOT_IN_USE" + ] }, "vnfmInfo": { "description": "Match strings that specify VNFMs compatible with the VNF. See table 10.5.2.2-1.\n", @@ -130,12 +152,16 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFPackageManagement-API/schemas/PkgmSubscriptions.schema.json b/SOL003/VNFPackageManagement-API/schemas/PkgmSubscriptions.schema.json index da51850c..5667f843 100644 --- a/SOL003/VNFPackageManagement-API/schemas/PkgmSubscriptions.schema.json +++ b/SOL003/VNFPackageManagement-API/schemas/PkgmSubscriptions.schema.json @@ -3,7 +3,11 @@ "items": { "description": "This type represents a subscription related to notifications about VNF package management.\n", "type": "object", - "required": ["id", "callbackUri", "_links"], + "required": [ + "id", + "callbackUri", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -16,13 +20,19 @@ { "oneOf": [ { - "required": ["vnfProductsFromProviders"] + "required": [ + "vnfProductsFromProviders" + ] }, { - "required": ["vnfdId"] + "required": [ + "vnfdId" + ] }, { - "required": ["vnfPkgId"] + "required": [ + "vnfPkgId" + ] } ] } @@ -44,7 +54,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProvider"], + "required": [ + "vnfProvider" + ], "properties": { "vnfProvider": { "description": "A string defined in IETF RFC 8259.\n", @@ -55,7 +67,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProductName"], + "required": [ + "vnfProductName" + ], "properties": { "vnfProductName": { "description": "A string defined in IETF RFC 8259.\n", @@ -66,7 +80,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfSoftwareVersion"], + "required": [ + "vnfSoftwareVersion" + ], "properties": { "vnfSoftwareVersion": { "description": "A version.\n", @@ -108,12 +124,18 @@ "operationalState": { "description": "- ENABLED: The VNF package is enabled, i.e. it can be used for\n the creation of new \"Individual VNF instance\" resources.\n- DISABLED: The VNF package is disabled, i.e. it shall not be used for\n the creation of further \"Individual VNF instance\" resources\n (unless and until the VNF package is re-enabled).\n", "type": "string", - "enum": ["ENABLED", "DISABLED"] + "enum": [ + "ENABLED", + "DISABLED" + ] }, "usageState": { "description": "- IN_USE: \"Individual VNF instance\" resources created from this VNF package exist. - NOT_IN_USE: No \"Individual VNF instance\" resource created from this VNF package exists.\n", "type": "string", - "enum": ["IN_USE", "NOT_IN_USE"] + "enum": [ + "IN_USE", + "NOT_IN_USE" + ] }, "vnfmInfo": { "description": "Match strings that specify VNFMs compatible with the VNF. See table 10.5.2.2-1.\n", @@ -132,12 +154,16 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -149,4 +175,4 @@ } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json b/SOL003/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json index 4f73147a..6437f102 100644 --- a/SOL003/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json +++ b/SOL003/VNFPackageManagement-API/schemas/VnfPackageChangeNotification.schema.json @@ -19,7 +19,9 @@ "notificationType": { "description": "Discriminator for the different notification types. Shall be set to \"VnfPackageChangeNotification\" for this notification type.\n", "type": "string", - "enum": ["VnfPackageChangeNotification"] + "enum": [ + "VnfPackageChangeNotification" + ] }, "subscriptionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -41,22 +43,33 @@ "changeType": { "description": "- OP_STATE_CHANGE: The \"operationalState\" attribute has been changed. - PKG_DELETE: The VNF package has been deleted.\n", "type": "string", - "enum": ["OP_STATE_CHANGE", "PKG_DELETE"] + "enum": [ + "OP_STATE_CHANGE", + "PKG_DELETE" + ] }, "operationalState": { "description": "- ENABLED: The VNF package is enabled, i.e. it can be used for\n the creation of new \"Individual VNF instance\" resources.\n- DISABLED: The VNF package is disabled, i.e. it shall not be used for\n the creation of further \"Individual VNF instance\" resources\n (unless and until the VNF package is re-enabled).\n", "type": "string", - "enum": ["ENABLED", "DISABLED"] + "enum": [ + "ENABLED", + "DISABLED" + ] }, "_links": { "description": "This type represents the links to resources that a VNF package management notification can contain.\n", "type": "object", - "required": ["vnfPackage", "subscription"], + "required": [ + "vnfPackage", + "subscription" + ], "properties": { "vnfPackage": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -67,7 +80,9 @@ "vnfPackageByVnfdId": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -78,7 +93,9 @@ "subscription": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -89,4 +106,4 @@ } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/schemas/VnfPackageOnboardingNotification.schema.json b/SOL003/VNFPackageManagement-API/schemas/VnfPackageOnboardingNotification.schema.json index b7952972..61bbd751 100644 --- a/SOL003/VNFPackageManagement-API/schemas/VnfPackageOnboardingNotification.schema.json +++ b/SOL003/VNFPackageManagement-API/schemas/VnfPackageOnboardingNotification.schema.json @@ -19,7 +19,9 @@ "notificationType": { "description": "Discriminator for the different notification types. Shall be set to \"VnfPackageOnboardingNotification\" for this notification type.\n", "type": "string", - "enum": ["VnfPackageOnboardingNotification"] + "enum": [ + "VnfPackageOnboardingNotification" + ] }, "subscriptionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -49,12 +51,17 @@ "_links": { "description": "This type represents the links to resources that a VNF package management notification can contain.\n", "type": "object", - "required": ["vnfPackage", "subscription"], + "required": [ + "vnfPackage", + "subscription" + ], "properties": { "vnfPackage": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -65,7 +72,9 @@ "vnfPackageByVnfdId": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -76,7 +85,9 @@ "subscription": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFPackageManagement-API/schemas/additionalArtifacts.schema.json b/SOL003/VNFPackageManagement-API/schemas/additionalArtifacts.schema.json index a8d34a22..0a9e4621 100644 --- a/SOL003/VNFPackageManagement-API/schemas/additionalArtifacts.schema.json +++ b/SOL003/VNFPackageManagement-API/schemas/additionalArtifacts.schema.json @@ -4,7 +4,11 @@ "items": { "description": "This type represents an artifact other than a software image which is contained in or external to a VNF package.\n", "type": "object", - "required": ["artifactPath", "checksum", "isEncrypted"], + "required": [ + "artifactPath", + "checksum", + "isEncrypted" + ], "properties": { "artifactPath": { "description": "A string defined in IETF RFC 8259.\n", @@ -33,7 +37,11 @@ "artifactClassification": { "description": "Marks specific types of artifacts as defined in the VNF package. If none of the specific classes listed below applies, the attribute shall not be present.\nValid values: -\tHISTORY: a history artifact as per clause 4.3.3 in ETSI GS NFV-SOL 004 -\tTESTING: a testing artifact as per clause 4.3.4 in ETSI GS NFV-SOL 004 -\tLICENSE: a license artifact as per clause 4.3.5 in ETSI GS NFV-SOL 004\n", "type": "string", - "enum": ["HISTORY", "TESTING", "LICENSE"] + "enum": [ + "HISTORY", + "TESTING", + "LICENSE" + ] }, "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", diff --git a/SOL003/VNFPackageManagement-API/schemas/links.schema.json b/SOL003/VNFPackageManagement-API/schemas/links.schema.json index 74b352e7..5d844d84 100644 --- a/SOL003/VNFPackageManagement-API/schemas/links.schema.json +++ b/SOL003/VNFPackageManagement-API/schemas/links.schema.json @@ -1,12 +1,17 @@ { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self", "packageContent"], + "required": [ + "self", + "packageContent" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -17,7 +22,9 @@ "vnfd": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -28,7 +35,9 @@ "packageContent": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -37,4 +46,4 @@ } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/schemas/softwareImage.schema.json b/SOL003/VNFPackageManagement-API/schemas/softwareImage.schema.json index 0dfb28ae..f50b7fbf 100644 --- a/SOL003/VNFPackageManagement-API/schemas/softwareImage.schema.json +++ b/SOL003/VNFPackageManagement-API/schemas/softwareImage.schema.json @@ -43,7 +43,15 @@ "containerFormat": { "description": "Container format indicates whether the software image is in a file format that also contains metadata about the actual software. Permitted values: - AKI: a kernel image format - AMI: a machine image format - ARI: a ramdisk image format - BARE: the image does not have a container or metadata envelope - DOCKER: docker container format - OVA: OVF package in a tarfile - OVF: OVF container format See note 1.\n", "type": "string", - "enum": ["AKI", "AMI", "ARI", "BARE", "DOCKER", "OVA", "OVF"] + "enum": [ + "AKI", + "AMI", + "ARI", + "BARE", + "DOCKER", + "OVA", + "OVF" + ] }, "diskFormat": { "description": "Disk format of a software image is the format of the underlying disk image. Permitted values:\n - AKI: a kernel image format\n - AMI: a machine image format\n - ARI: a ramdisk image format\n - ISO: an archive format for the data contents of an optical disc,\n such as CD-ROM\n - QCOW2: a common disk image format, which can expand dynamically\n and supports copy on write\n - RAW: an unstructured disk image format\n - VDI: a common disk image format\n - VHD: a common disk image format\n - VHDX: enhanced version of VHD format\n - VMDK: a common disk image format\nSee notes 2 and 3.\n", diff --git a/SOL003/VNFPackageManagement-API/schemas/vnfPkgInfo.schema.json b/SOL003/VNFPackageManagement-API/schemas/vnfPkgInfo.schema.json index caf8122e..d92517dd 100644 --- a/SOL003/VNFPackageManagement-API/schemas/vnfPkgInfo.schema.json +++ b/SOL003/VNFPackageManagement-API/schemas/vnfPkgInfo.schema.json @@ -53,7 +53,10 @@ "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\n", "type": "string", - "enum": ["OPTION_1", "OPTION_2"] + "enum": [ + "OPTION_1", + "OPTION_2" + ] }, "signingCertificate": { "description": "A string defined in IETF RFC 8259.\n", @@ -104,7 +107,15 @@ "containerFormat": { "description": "Container format indicates whether the software image is in a file format that also contains metadata about the actual software. Permitted values: - AKI: a kernel image format - AMI: a machine image format - ARI: a ramdisk image format - BARE: the image does not have a container or metadata envelope - DOCKER: docker container format - OVA: OVF package in a tarfile - OVF: OVF container format See note 1.\n", "type": "string", - "enum": ["AKI", "AMI", "ARI", "BARE", "DOCKER", "OVA", "OVF"] + "enum": [ + "AKI", + "AMI", + "ARI", + "BARE", + "DOCKER", + "OVA", + "OVF" + ] }, "diskFormat": { "description": "Disk format of a software image is the format of the underlying disk image. Permitted values:\n - AKI: a kernel image format\n - AMI: a machine image format\n - ARI: a ramdisk image format\n - ISO: an archive format for the data contents of an optical disc,\n such as CD-ROM\n - QCOW2: a common disk image format, which can expand dynamically\n and supports copy on write\n - RAW: an unstructured disk image format\n - VDI: a common disk image format\n - VHD: a common disk image format\n - VHDX: enhanced version of VHD format\n - VMDK: a common disk image format\nSee notes 2 and 3.\n", @@ -159,7 +170,11 @@ "items": { "description": "This type represents an artifact other than a software image which is contained in or external to a VNF package.\n", "type": "object", - "required": ["artifactPath", "checksum", "isEncrypted"], + "required": [ + "artifactPath", + "checksum", + "isEncrypted" + ], "properties": { "artifactPath": { "description": "A string defined in IETF RFC 8259.\n", @@ -188,7 +203,11 @@ "artifactClassification": { "description": "Marks specific types of artifacts as defined in the VNF package. If none of the specific classes listed below applies, the attribute shall not be present.\nValid values: -\tHISTORY: a history artifact as per clause 4.3.3 in ETSI GS NFV-SOL 004 -\tTESTING: a testing artifact as per clause 4.3.4 in ETSI GS NFV-SOL 004 -\tLICENSE: a license artifact as per clause 4.3.5 in ETSI GS NFV-SOL 004\n", "type": "string", - "enum": ["HISTORY", "TESTING", "LICENSE"] + "enum": [ + "HISTORY", + "TESTING", + "LICENSE" + ] }, "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", @@ -200,17 +219,29 @@ "onboardingState": { "description": "CREATED: The \"Individual VNF package\" resource has been created. UPLOADING: The associated VNF package content is being uploaded. PROCESSING: The associated VNF package content is being processed, e.g.,\n validation.\nONBOARDED: The associated VNF package content has been on-boarded successfully. ERROR: There was an error during upload of the VNF package content or external\n artifacts, or during VNF package processing.\n", "type": "string", - "enum": ["CREATED", "UPLOADING", "PROCESSING", "ONBOARDED", "ERROR"] + "enum": [ + "CREATED", + "UPLOADING", + "PROCESSING", + "ONBOARDED", + "ERROR" + ] }, "operationalState": { "description": "- ENABLED: The VNF package is enabled, i.e. it can be used for\n the creation of new \"Individual VNF instance\" resources.\n- DISABLED: The VNF package is disabled, i.e. it shall not be used for\n the creation of further \"Individual VNF instance\" resources\n (unless and until the VNF package is re-enabled).\n", "type": "string", - "enum": ["ENABLED", "DISABLED"] + "enum": [ + "ENABLED", + "DISABLED" + ] }, "usageState": { "description": "- IN_USE: \"Individual VNF instance\" resources created from this VNF package exist. - NOT_IN_USE: No \"Individual VNF instance\" resource created from this VNF package exists.\n", "type": "string", - "enum": ["IN_USE", "NOT_IN_USE"] + "enum": [ + "IN_USE", + "NOT_IN_USE" + ] }, "vnfmInfo": { "description": "A string defined in IETF RFC 8259.\n", @@ -223,7 +254,10 @@ "onboardingFailureDetails": { "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807, the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807.\n", "type": "object", - "required": ["status", "detail"], + "required": [ + "status", + "detail" + ], "properties": { "type": { "description": "A URI reference according to IETF RFC 3986 that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", @@ -252,12 +286,17 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self", "packageContent"], + "required": [ + "self", + "packageContent" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -268,7 +307,9 @@ "vnfd": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -279,7 +320,9 @@ "packageContent": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFPackageManagement-API/schemas/vnfPkgsInfo.schema.json b/SOL003/VNFPackageManagement-API/schemas/vnfPkgsInfo.schema.json index 06ac70f4..05f858ed 100644 --- a/SOL003/VNFPackageManagement-API/schemas/vnfPkgsInfo.schema.json +++ b/SOL003/VNFPackageManagement-API/schemas/vnfPkgsInfo.schema.json @@ -55,7 +55,10 @@ "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\n", "type": "string", - "enum": ["OPTION_1", "OPTION_2"] + "enum": [ + "OPTION_1", + "OPTION_2" + ] }, "signingCertificate": { "description": "A string defined in IETF RFC 8259.\n", @@ -106,7 +109,15 @@ "containerFormat": { "description": "Container format indicates whether the software image is in a file format that also contains metadata about the actual software. Permitted values: - AKI: a kernel image format - AMI: a machine image format - ARI: a ramdisk image format - BARE: the image does not have a container or metadata envelope - DOCKER: docker container format - OVA: OVF package in a tarfile - OVF: OVF container format See note 1.\n", "type": "string", - "enum": ["AKI", "AMI", "ARI", "BARE", "DOCKER", "OVA", "OVF"] + "enum": [ + "AKI", + "AMI", + "ARI", + "BARE", + "DOCKER", + "OVA", + "OVF" + ] }, "diskFormat": { "description": "Disk format of a software image is the format of the underlying disk image. Permitted values:\n - AKI: a kernel image format\n - AMI: a machine image format\n - ARI: a ramdisk image format\n - ISO: an archive format for the data contents of an optical disc,\n such as CD-ROM\n - QCOW2: a common disk image format, which can expand dynamically\n and supports copy on write\n - RAW: an unstructured disk image format\n - VDI: a common disk image format\n - VHD: a common disk image format\n - VHDX: enhanced version of VHD format\n - VMDK: a common disk image format\nSee notes 2 and 3.\n", @@ -161,7 +172,11 @@ "items": { "description": "This type represents an artifact other than a software image which is contained in or external to a VNF package.\n", "type": "object", - "required": ["artifactPath", "checksum", "isEncrypted"], + "required": [ + "artifactPath", + "checksum", + "isEncrypted" + ], "properties": { "artifactPath": { "description": "A string defined in IETF RFC 8259.\n", @@ -190,7 +205,11 @@ "artifactClassification": { "description": "Marks specific types of artifacts as defined in the VNF package. If none of the specific classes listed below applies, the attribute shall not be present.\nValid values: -\tHISTORY: a history artifact as per clause 4.3.3 in ETSI GS NFV-SOL 004 -\tTESTING: a testing artifact as per clause 4.3.4 in ETSI GS NFV-SOL 004 -\tLICENSE: a license artifact as per clause 4.3.5 in ETSI GS NFV-SOL 004\n", "type": "string", - "enum": ["HISTORY", "TESTING", "LICENSE"] + "enum": [ + "HISTORY", + "TESTING", + "LICENSE" + ] }, "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", @@ -202,17 +221,29 @@ "onboardingState": { "description": "CREATED: The \"Individual VNF package\" resource has been created. UPLOADING: The associated VNF package content is being uploaded. PROCESSING: The associated VNF package content is being processed, e.g.,\n validation.\nONBOARDED: The associated VNF package content has been on-boarded successfully. ERROR: There was an error during upload of the VNF package content or external\n artifacts, or during VNF package processing.\n", "type": "string", - "enum": ["CREATED", "UPLOADING", "PROCESSING", "ONBOARDED", "ERROR"] + "enum": [ + "CREATED", + "UPLOADING", + "PROCESSING", + "ONBOARDED", + "ERROR" + ] }, "operationalState": { "description": "- ENABLED: The VNF package is enabled, i.e. it can be used for\n the creation of new \"Individual VNF instance\" resources.\n- DISABLED: The VNF package is disabled, i.e. it shall not be used for\n the creation of further \"Individual VNF instance\" resources\n (unless and until the VNF package is re-enabled).\n", "type": "string", - "enum": ["ENABLED", "DISABLED"] + "enum": [ + "ENABLED", + "DISABLED" + ] }, "usageState": { "description": "- IN_USE: \"Individual VNF instance\" resources created from this VNF package exist. - NOT_IN_USE: No \"Individual VNF instance\" resource created from this VNF package exists.\n", "type": "string", - "enum": ["IN_USE", "NOT_IN_USE"] + "enum": [ + "IN_USE", + "NOT_IN_USE" + ] }, "vnfmInfo": { "description": "A string defined in IETF RFC 8259.\n", @@ -225,7 +256,10 @@ "onboardingFailureDetails": { "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807, the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807.\n", "type": "object", - "required": ["status", "detail"], + "required": [ + "status", + "detail" + ], "properties": { "type": { "description": "A URI reference according to IETF RFC 3986 that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", @@ -254,12 +288,17 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self", "packageContent"], + "required": [ + "self", + "packageContent" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -270,7 +309,9 @@ "vnfd": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -281,7 +322,9 @@ "packageContent": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", -- GitLab From fde9de2938e1ce3c8ae236eb7857d03b26f5a5dc Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 18 Dec 2024 17:35:21 +0500 Subject: [PATCH 067/141] update response body schema as per SOL 003 version 5.1.1 --- .../schemas/additionalArtifacts.schema.json | 4 ++-- .../VNFPackageManagement-API/schemas/vnfPkgInfo.schema.json | 4 ++-- .../VNFPackageManagement-API/schemas/vnfPkgsInfo.schema.json | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/schemas/additionalArtifacts.schema.json b/SOL003/VNFPackageManagement-API/schemas/additionalArtifacts.schema.json index 0a9e4621..a3ac29cb 100644 --- a/SOL003/VNFPackageManagement-API/schemas/additionalArtifacts.schema.json +++ b/SOL003/VNFPackageManagement-API/schemas/additionalArtifacts.schema.json @@ -2,7 +2,7 @@ "description": "Information about VNF package artifacts contained in the VNF package that are not software images. Every local and external artifact declared in the manifest shall be included, except the software images and the files that make up the parts of the VNFD (see clause 10.4.4.3.2). Signature files and certificate files are not considered as artifacts, however, the content of the \"Licenses\" and \"Testing\" directories in the VNF package is. This attribute shall not be present before the VNF package content is on-boarded. Otherwise, this attribute shall be present if the VNF package contains additional artifacts.\n", "type": "array", "items": { - "description": "This type represents an artifact other than a software image which is contained in or external to a VNF package.\n", + "description": "This type represents an artifact other than a software image which is contained in or external to a VNF package.\n* NOTE: The attribute name \"artifactURI\" does not comply with the naming convention defined in clause 4.3 in ETSI GS NFV-SOL 015. This is to maintain the backward compatibility.\n", "type": "object", "required": [ "artifactPath", @@ -15,7 +15,7 @@ "type": "string" }, "artifactURI": { - "description": "URI of the artifact as defined in the VNF package manifest. Shall be present if the artifact is external to the package and shall be absent otherwise.\nEXAMPLE: https://example.com/m%40ster.sh\n", + "description": "URI of the artifact as defined in the VNF package manifest. Shall be present if the artifact is external to the package and shall be absent otherwise. EXAMPLE:https://example.com/m%40ster.sh See note.\n", "type": "array", "items": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFPackageManagement-API/schemas/vnfPkgInfo.schema.json b/SOL003/VNFPackageManagement-API/schemas/vnfPkgInfo.schema.json index d92517dd..9b2df4e9 100644 --- a/SOL003/VNFPackageManagement-API/schemas/vnfPkgInfo.schema.json +++ b/SOL003/VNFPackageManagement-API/schemas/vnfPkgInfo.schema.json @@ -168,7 +168,7 @@ "description": "Information about VNF package artifacts contained in the VNF package that are not software images. Every local and external artifact declared in the manifest shall be included, except the software images and the files that make up the parts of the VNFD (see clause 10.4.4.3.2). Signature files and certificate files are not considered as artifacts, however, the content of the \"Licenses\" and \"Testing\" directories in the VNF package is. This attribute shall not be present before the VNF package content is on-boarded. Otherwise, this attribute shall be present if the VNF package contains additional artifacts.\n", "type": "array", "items": { - "description": "This type represents an artifact other than a software image which is contained in or external to a VNF package.\n", + "description": "This type represents an artifact other than a software image which is contained in or external to a VNF package.\n* NOTE: The attribute name \"artifactURI\" does not comply with the naming convention defined in clause 4.3 in ETSI GS NFV-SOL 015. This is to maintain the backward compatibility.\n", "type": "object", "required": [ "artifactPath", @@ -181,7 +181,7 @@ "type": "string" }, "artifactURI": { - "description": "URI of the artifact as defined in the VNF package manifest. Shall be present if the artifact is external to the package and shall be absent otherwise.\nEXAMPLE: https://example.com/m%40ster.sh\n", + "description": "URI of the artifact as defined in the VNF package manifest. Shall be present if the artifact is external to the package and shall be absent otherwise. EXAMPLE:https://example.com/m%40ster.sh See note.\n", "type": "array", "items": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFPackageManagement-API/schemas/vnfPkgsInfo.schema.json b/SOL003/VNFPackageManagement-API/schemas/vnfPkgsInfo.schema.json index 05f858ed..734b861b 100644 --- a/SOL003/VNFPackageManagement-API/schemas/vnfPkgsInfo.schema.json +++ b/SOL003/VNFPackageManagement-API/schemas/vnfPkgsInfo.schema.json @@ -170,7 +170,7 @@ "description": "Information about VNF package artifacts contained in the VNF package that are not software images. Every local and external artifact declared in the manifest shall be included, except the software images and the files that make up the parts of the VNFD (see clause 10.4.4.3.2). Signature files and certificate files are not considered as artifacts, however, the content of the \"Licenses\" and \"Testing\" directories in the VNF package is. This attribute shall not be present before the VNF package content is on-boarded. Otherwise, this attribute shall be present if the VNF package contains additional artifacts.\n", "type": "array", "items": { - "description": "This type represents an artifact other than a software image which is contained in or external to a VNF package.\n", + "description": "This type represents an artifact other than a software image which is contained in or external to a VNF package.\n* NOTE: The attribute name \"artifactURI\" does not comply with the naming convention defined in clause 4.3 in ETSI GS NFV-SOL 015. This is to maintain the backward compatibility.\n", "type": "object", "required": [ "artifactPath", @@ -183,7 +183,7 @@ "type": "string" }, "artifactURI": { - "description": "URI of the artifact as defined in the VNF package manifest. Shall be present if the artifact is external to the package and shall be absent otherwise.\nEXAMPLE: https://example.com/m%40ster.sh\n", + "description": "URI of the artifact as defined in the VNF package manifest. Shall be present if the artifact is external to the package and shall be absent otherwise. EXAMPLE:https://example.com/m%40ster.sh See note.\n", "type": "array", "items": { "description": "String formatted according to IETF RFC 3986.\n", -- GitLab From d9d95b54a9c9f0b1c37aaf214ff087c81168f407 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 19 Dec 2024 15:43:36 +0500 Subject: [PATCH 068/141] implement check for Location in Response Header --- SOL003/VNFPackageManagement-API/Subscriptions.robot | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SOL003/VNFPackageManagement-API/Subscriptions.robot b/SOL003/VNFPackageManagement-API/Subscriptions.robot index 965273ab..42bcd70d 100644 --- a/SOL003/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL003/VNFPackageManagement-API/Subscriptions.robot @@ -75,6 +75,7 @@ Create new VNF Package subscription ... Post-Conditions: The VNF package subscription is successfully set and it matches the issued subscription Send Post Request for VNF Package Subscription Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is PkgmSubscription Check HTTP Response Body PkgmSubscription Attributes Values Match the Issued Subscription Check Postcondition VNF Package Subscription Is Set @@ -210,6 +211,7 @@ Create new VNF Package subscription with permitted authorization scope ... Post-Conditions: The VNF package subscription is successfully set and it matches the issued subscription Send Post Request for VNF Package Subscription with permitted authorization scope Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is PkgmSubscription Check HTTP Response Body PkgmSubscription Attributes Values Match the Issued Subscription Check Postcondition VNF Package Subscription Is Set -- GitLab From 392f923a7f5ce929087d28cb9d43423d0f6ac882 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 12:31:23 +0500 Subject: [PATCH 069/141] update api major version --- SOL003/VNFPackageManagement-API/environment/variables.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index 9e598c29..2085a899 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -36,7 +36,7 @@ ${onboardingStateVnfPkgId} f9f130e4-05eb-4082-a676-4c97d13a883d ${onboardingStateVnfdId} f9f130e4-05eb-4082-a676-4c97d13a883d ${apiRoot} / -${apiMajorVersion} v1 +${apiMajorVersion} v2 ${apiName} vnfpkgm ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint -- GitLab From fa741c5e533b3720a3e8d7cc88d0aa0aaa2632e8 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 12:37:50 +0500 Subject: [PATCH 070/141] Fix issue #188: Set version header --- .../VNFPackageManagement-API/ApiVersion.robot | 10 + .../NotificationEndpoint.robot | 3 + .../VNFPackageManagementKeywords.robot | 186 ++++++++++++++++++ .../environment/variables.txt | 1 + 4 files changed, 200 insertions(+) diff --git a/SOL003/VNFPackageManagement-API/ApiVersion.robot b/SOL003/VNFPackageManagement-API/ApiVersion.robot index 1e95f9d4..953a0670 100644 --- a/SOL003/VNFPackageManagement-API/ApiVersion.robot +++ b/SOL003/VNFPackageManagement-API/ApiVersion.robot @@ -133,6 +133,7 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -140,6 +141,7 @@ POST API Version GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -147,6 +149,7 @@ GET API Version PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -154,6 +157,7 @@ PUT API Version PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -161,6 +165,7 @@ PATCH API Version DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -168,6 +173,7 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -175,6 +181,7 @@ POST API Version with apiMajorVersion GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -182,6 +189,7 @@ GET API Version with apiMajorVersion PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -189,6 +197,7 @@ PUT API Version with apiMajorVersion PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -196,6 +205,7 @@ PATCH API Version with apiMajorVersion DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response diff --git a/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot b/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot index 5fe43090..930b3277 100644 --- a/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot @@ -36,6 +36,7 @@ VNF Package Change Notification Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 @@ -51,6 +52,7 @@ Post VNF Package Onboarding Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/VnfPackageOnboardingNotification.json ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPackageId=${vnfPackageId} vndId=${vndId} @@ -62,6 +64,7 @@ Post VNF Package Change Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/VnfPackageChangeNotification.json ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPackageId=${vnfPackageId} vndId=${vndId} diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 642d058f..9eb760fb 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -16,6 +16,7 @@ Library String Get all VNF Packages Log Trying to get all VNF Packages present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response @@ -24,6 +25,7 @@ Get all VNF Packages Get all VNF Packages with nextpage_opaque_marker parameter Log Get next page of packages Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query using the URI provided in the previous GET request and validate response Get ${nextPageUri} @@ -51,6 +53,7 @@ Check HTTP Response Body Does Not Contain userDefinedData GET VNF Packages with attribute-based filter Log Trying to get all VNF Packages present in the NFVO Catalogue, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?${POS_FILTER} ${output}= Output response @@ -66,6 +69,7 @@ Check HTTP Response Body VnfPkgsInfo Matches the requested Attribute-Based Filte GET VNF Packages with invalid attribute-based filter Log Trying to perform a negative get, filtering by the inexistent filter 'nfvId' Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?${NEG_FILTER} ${output}= Output response @@ -74,6 +78,7 @@ GET VNF Packages with invalid attribute-based filter GET VNF Packages with all_fields attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?all_fields ${output}= Output response @@ -95,6 +100,7 @@ Check HTTP Response Body VnfPkgsInfo Matches the requested all_fields selector GET VNF Packages with exclude_default attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using exclude_default filter. Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?exclude_default ${output}= Output response @@ -114,6 +120,7 @@ GET VNF Packages with fields attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use fields parameter Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?fields=${fields} ${output}= Output response @@ -133,6 +140,7 @@ GET VNF Packages with fields and exclude_default attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use fields parameter Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?fields=${fields}&exclude_default ${output}= Output response @@ -152,6 +160,7 @@ GET VNF Packages with exclude_fields attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use fields parameter Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?exclude_fields=${fields} ${output}= Output response @@ -170,6 +179,7 @@ Check HTTP Response Body vnfPkgsInfo Matches the requested exclude_fields select GET all VNF Packages with invalid resource endpoint Log Trying to perform a GET on a erroneous URI Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_package ${output}= Output response @@ -180,6 +190,7 @@ Get all VNF Packages with permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${VNF_PACKAGE_INFO_READONLY_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response @@ -190,6 +201,7 @@ Get all VNF Packages with not permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${VNF_PACKAGE_INFO_READONLY_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response @@ -198,6 +210,7 @@ Get all VNF Packages with not permitted authorization scope Send POST Request for all VNF Packages Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response @@ -206,6 +219,7 @@ Send POST Request for all VNF Packages Send PUT Request for all VNF Packages Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response @@ -214,6 +228,7 @@ Send PUT Request for all VNF Packages Send PATCH Request for all VNF Packages Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response @@ -222,6 +237,7 @@ Send PATCH Request for all VNF Packages Send DELETE Request for all VNF Packages Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response @@ -230,6 +246,7 @@ Send DELETE Request for all VNF Packages GET Individual VNF Package Log Trying to get a VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response @@ -243,6 +260,7 @@ Check HTTP Response Body vnfPkgInfo Identifier matches the requested VNF Package GET Individual VNF Package with invalid resource identifier Log Trying to perform a negative get, using wrong authorization bearer Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPackageId} ${output}= Output response @@ -253,6 +271,7 @@ GET Individual VNF Package with permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${VNF_PACKAGE_INFO_READONLY_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response @@ -263,6 +282,7 @@ GET Individual VNF Package with not permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${VNF_PACKAGE_INFO_READONLY_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response @@ -271,6 +291,7 @@ GET Individual VNF Package with not permitted authorization scope Send POST Request for individual VNF Package Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response @@ -279,6 +300,7 @@ Send POST Request for individual VNF Package Send PUT Request for individual VNF Package Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response @@ -287,6 +309,7 @@ Send PUT Request for individual VNF Package Send PATCH Request for individual VNF Package Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response @@ -295,6 +318,7 @@ Send PATCH Request for individual VNF Package Send DELETE Request for individual VNF Package Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response @@ -303,6 +327,7 @@ Send DELETE Request for individual VNF Package GET Individual VNF Package Content Log Trying to get a VNF Package Content Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response @@ -317,6 +342,7 @@ GET Individual VNF Package Content with Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${range}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content Unset Headers ["Range"] @@ -327,6 +353,7 @@ GET Individual VNF Package Content with explicit Range Request Log Trying to get a VNF Package Content using RANGE using an NFVO that can handle it Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${range}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content Unset Headers ["Range"] @@ -351,6 +378,7 @@ GET Individual VNF Package Content with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content Unset Headers ["Range"] @@ -360,6 +388,7 @@ GET Individual VNF Package Content with invalid Range Request GET Individual VNF Package Content with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/package_content ${output}= Output response @@ -368,6 +397,7 @@ GET Individual VNF Package Content with invalid resource identifier GET Content for VNF Package in onboarding state different from ONBOARDED Log Trying to get a VNF Package content present in the NFVO Catalogue, but not in ONBOARDED operationalStatus Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/package_content ${output}= Output response @@ -378,6 +408,7 @@ GET Individual VNF Package Content with permitted authorization scope Set Headers {"Accept": "${ACCEPT_ZIP}"} ${scopeValue}= Create Dictionary scopeValue=${PACKAGE_CONTENT_READONLY_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response @@ -388,6 +419,7 @@ GET Individual VNF Package Content with not permitted authorization scope Set Headers {"Accept": "${ACCEPT_ZIP}"} ${scopeValue}= Create Dictionary scopeValue=${PACKAGE_CONTENT_READONLY_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response @@ -396,6 +428,7 @@ GET Individual VNF Package Content with not permitted authorization scope Send POST Request for individual VNF Package Content Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response @@ -404,6 +437,7 @@ Send POST Request for individual VNF Package Content Send PUT Request for individual VNF Package Content Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response @@ -412,6 +446,7 @@ Send PUT Request for individual VNF Package Content Send PATCH Request for individual VNF Package Content Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response @@ -420,6 +455,7 @@ Send PATCH Request for individual VNF Package Content Send DELETE Request for individual VNF Package Content Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response @@ -428,6 +464,7 @@ Send DELETE Request for individual VNF Package Content Get all VNF Package Subscriptions Log Trying to get the list of subscriptions Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response @@ -436,6 +473,7 @@ Get all VNF Package Subscriptions GET All VNF Package Subscriptions with nextpage_opaque_marker parameter Log Get next page of subscriptions Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query using the URI provided in the previous GET request and validate response Get ${nextPageUri} @@ -445,6 +483,7 @@ GET All VNF Package Subscriptions with nextpage_opaque_marker parameter Get VNF Package Subscriptions with attribute-based filters Log Trying to get the list of subscriptions using filters Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response @@ -453,6 +492,7 @@ Get VNF Package Subscriptions with attribute-based filters Get VNF Package Subscriptions with invalid attribute-based filters Log Trying to get the list of subscriptions using filters with wrong attribute name Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response @@ -461,6 +501,7 @@ Get VNF Package Subscriptions with invalid attribute-based filters Get VNF Package Subscriptions with invalid resource endpoint Log Trying to perform a request on a Uri which doesn't exist Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response @@ -472,6 +513,7 @@ Send Post Request for VNF Package Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_uri=${callback_endpoint} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Creating mock request and response to handle GET operation on notification endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} @@ -490,6 +532,7 @@ Send Post Request for Duplicated VNF Package Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_uri=${callback_endpoint} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Creating mock request and response to handle GET operation on notification endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} @@ -510,6 +553,7 @@ Send Post Request for VNF Package Subscription with permitted authorization scop ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_uri=${callback_endpoint} ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Creating mock request and response to handle GET operation on notification endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} @@ -530,6 +574,7 @@ Send Post Request for VNF Package Subscription with not permitted authorization ${body}= Format String ${template} callback_uri=${callback_uri} callback_port=${callback_port} callback_uri=${callback_endpoint} ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Creating mock request and response to handle GET operation on notification endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} @@ -545,6 +590,7 @@ Send Post Request for VNF Package Subscription with not permitted authorization Send Put Request for VNF Package Subscriptions Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response @@ -553,6 +599,7 @@ Send Put Request for VNF Package Subscriptions Send Patch Request for VNF Package Subscriptions Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response @@ -561,6 +608,7 @@ Send Patch Request for VNF Package Subscriptions Send Delete Request for VNF Package Subscriptions Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response @@ -569,6 +617,7 @@ Send Delete Request for VNF Package Subscriptions Get single file VNFD in Individual VNF Package in Plain Format Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd ${output}= Output response @@ -577,6 +626,7 @@ Get single file VNFD in Individual VNF Package in Plain Format Get VNFD in Individual VNF Package in Zip Format Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response @@ -586,6 +636,7 @@ Get single file VNFD in Individual VNF Package in Plain or Zip Format Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd ${output}= Output response @@ -595,6 +646,7 @@ Get multi file VNFD in Individual VNF Package in Plain or Zip Format Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response @@ -607,6 +659,7 @@ Check HTTP Response Header Content-Type Is Any of Get multi file VNFD in Individual VNF Package in Plain Format Log Trying to get a negative case performing a get on a VNFD from a given VNF Package present in the NFVO Catalogue. Accept will be text/plain but VNFD is composed my multiple files. Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response @@ -616,6 +669,7 @@ Get VNFD in Individual VNF Package with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/vnfd ${output}= Output response @@ -625,6 +679,7 @@ Get VNFD in Individual VNF Package Content with conflict due to onboarding state Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/vnfd ${output}= Output response @@ -635,6 +690,7 @@ Get single file VNFD in Individual VNF Package in Plain Format with permitted au Set Headers {"Accept": "${ACCEPT_PLAIN}"} ${scopeValue}= Create Dictionary scopeValue=${VNFD_READONLY_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd ${output}= Output response @@ -645,6 +701,7 @@ Get single file VNFD in Individual VNF Package in Plain Format with not permitte Set Headers {"Accept": "${ACCEPT_PLAIN}"} ${scopeValue}= Create Dictionary scopeValue=${VNFD_READONLY_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgPlainVNFD}/vnfd ${output}= Output response @@ -653,6 +710,7 @@ Get single file VNFD in Individual VNF Package in Plain Format with not permitte Send POST Request for VNFD in individual VNF Package Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response @@ -661,6 +719,7 @@ Send POST Request for VNFD in individual VNF Package Send PUT Request for VNFD in individual VNF Package Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response @@ -669,6 +728,7 @@ Send PUT Request for VNFD in individual VNF Package Send PATCH Request for VNFD in individual VNF Package Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response @@ -677,6 +737,7 @@ Send PATCH Request for VNFD in individual VNF Package Send DELETE Request for VNFD in individual VNF Package Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response @@ -684,6 +745,7 @@ Send DELETE Request for VNFD in individual VNF Package GET Individual VNF Package Artifact Log Trying to get a VNF Package Artifact + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response @@ -691,6 +753,7 @@ GET Individual VNF Package Artifact GET Individual VNF Package Artifact in octet stream format Log Trying to get a VNF Package Artifact + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageOctetStreamId}/artifacts/${artifactPath} ${output}= Output response @@ -700,6 +763,7 @@ GET Individual VNF Package Artifact with Range Request Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Range": "${range}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} Unset Headers ["Range"] @@ -711,6 +775,7 @@ GET Individual VNF Package Artifact with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} Unset Headers ["Range"] @@ -719,6 +784,7 @@ GET Individual VNF Package Artifact with invalid Range Request GET Individual VNF Package Artifact with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/artifacts/${artifactPath} ${output}= Output response @@ -726,6 +792,7 @@ GET Individual VNF Package Artifact with invalid resource identifier GET Artifact for VNF Package in onboarding state different from ONBOARDED Log Trying to get a VNF Package artifact present in the NFVO Catalogue, but not in ONBOARDED operationalStatus + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts/${artifactPath} ${output}= Output response @@ -734,6 +801,7 @@ GET Artifact for VNF Package in onboarding state different from ONBOARDED Send POST Request for individual VNF Package Artifact Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response @@ -742,6 +810,7 @@ Send POST Request for individual VNF Package Artifact Send PUT Request for individual VNF Package Artifact Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response @@ -750,6 +819,7 @@ Send PUT Request for individual VNF Package Artifact Send PATCH Request for individual VNF Package Artifact Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response @@ -758,6 +828,7 @@ Send PATCH Request for individual VNF Package Artifact Send DELETE Request for individual VNF Package Artifact Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response @@ -800,6 +871,7 @@ Check Postcondition VNF Package Subscription Is Set Log Check Postcondition subscription exist Log Trying to get the subscription Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${location} == Location ... GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} @@ -811,6 +883,7 @@ Check Postcondition VNF Package Subscription Is Set Check Postcondition Subscription Resource Returned in Location Header Is Available Log Going to check postcondition + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${response['headers']['Location']} Integer response status 200 @@ -828,6 +901,7 @@ Check Postcondition Subscription Resource Returned in Location Header Is Availab Get Individual VNF Package Subscription Log Trying to get a single subscription identified by subscriptionId Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response @@ -836,6 +910,7 @@ Get Individual VNF Package Subscription GET individual VNF Package Subscription with invalid resource identifier Log Trying to perform a request on a subscriptionID which doesn't exist Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response @@ -846,6 +921,7 @@ Get Individual VNF Package Subscription with permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response @@ -856,6 +932,7 @@ Get Individual VNF Package Subscription with not permitted authorization scope Set Headers {"Accept": "${ACCEPT_JSON}"} ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response @@ -864,6 +941,7 @@ Get Individual VNF Package Subscription with not permitted authorization scope Send Delete request for individual VNF Package Subscription Log Trying to perform a DELETE on a subscriptionId Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response @@ -872,18 +950,21 @@ Send Delete request for individual VNF Package Subscription Send Delete request for individual VNF Package Subscription with invalid resource identifier Log Trying to perform a DELETE on a subscriptionId which doesn't exist Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post request for individual VNF Package Subscription + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Put request for individual VNF Package Subscription + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response @@ -893,6 +974,7 @@ Send Put request for individual VNF Package Subscription Set Suite Variable ${response} ${output} Send Patch request for individual VNF Package Subscription + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response @@ -938,6 +1020,7 @@ Check HTTP Response Header Contain Link Get all OnBoarded VNF Packages Log Trying to get all OnBoarded VNF Packages present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response @@ -946,6 +1029,7 @@ Get all OnBoarded VNF Packages Get all OnBoarded VNF Packages with nextpage_opaque_marker parameter Log Get next page of packages Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query using the URI provided in the previous GET request and validate response Get ${nextPageUri} @@ -955,6 +1039,7 @@ Get all OnBoarded VNF Packages with nextpage_opaque_marker parameter GET OnBoarded VNF Packages with attribute-based filter Log Trying to get all OnBoarded VNF Packages present in the NFVO Catalogue, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?${POS_FILTER} ${output}= Output response @@ -963,6 +1048,7 @@ GET OnBoarded VNF Packages with attribute-based filter GET OnBoarded VNF Packages with invalid attribute-based filter Log Trying to perform a negative get, filtering by the inexistent filter 'nfvId' Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?${NEG_FILTER} ${output}= Output response @@ -971,6 +1057,7 @@ GET OnBoarded VNF Packages with invalid attribute-based filter GET OnBoarded VNF Packages with all_fields attribute selector Log Trying to get all OnBoarded VNF Packages present in the NFVO Catalogue, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?all_fields ${output}= Output response @@ -979,6 +1066,7 @@ GET OnBoarded VNF Packages with all_fields attribute selector GET OnBoarded VNF Packages with exclude_default attribute selector Log Trying to get all OnBoarded VNF Packages present in the NFVO Catalogue, using exclude_default filter. Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?exclude_default ${output}= Output response @@ -988,6 +1076,7 @@ GET OnBoarded VNF Packages with fields attribute selector Log Trying to get all OnBoarded VNF Packages present in the NFVO Catalogue, using fields Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use fields parameter Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?fields=${fields} ${output}= Output response @@ -997,6 +1086,7 @@ GET OnBoarded VNF Packages with exclude_fields attribute selector Log Trying to get all OnBoarded VNF Packages present in the NFVO Catalogue, using fields Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use fields parameter Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?exclude_fields=${fields} ${output}= Output response @@ -1005,6 +1095,7 @@ GET OnBoarded VNF Packages with exclude_fields attribute selector GET OnBoarded all VNF Packages with invalid resource endpoint Log Trying to perform a GET on a erroneous URI Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_package ${output}= Output response @@ -1013,6 +1104,7 @@ GET OnBoarded all VNF Packages with invalid resource endpoint Send OnBoarded POST Request for all VNF Packages Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response @@ -1021,6 +1113,7 @@ Send OnBoarded POST Request for all VNF Packages Send OnBoarded PUT Request for all VNF Packages Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response @@ -1029,6 +1122,7 @@ Send OnBoarded PUT Request for all VNF Packages Send OnBoarded PATCH Request for all VNF Packages Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response @@ -1037,6 +1131,7 @@ Send OnBoarded PATCH Request for all VNF Packages Send OnBoarded DELETE Request for all VNF Packages Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages ${output}= Output response @@ -1045,6 +1140,7 @@ Send OnBoarded DELETE Request for all VNF Packages GET Individual OnBoarded VNF Package Log Trying to get a OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response @@ -1053,6 +1149,7 @@ GET Individual OnBoarded VNF Package GET Individual OnBoarded VNF Package with invalid resource identifier Log Trying to perform a negative get, using wrong authorization bearer Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${erroneousVnfdId} ${output}= Output response @@ -1061,6 +1158,7 @@ GET Individual OnBoarded VNF Package with invalid resource identifier Send POST Request for individual OnBoarded VNF Package Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response @@ -1069,6 +1167,7 @@ Send POST Request for individual OnBoarded VNF Package Send PUT Request for individual OnBoarded VNF Package Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response @@ -1077,6 +1176,7 @@ Send PUT Request for individual OnBoarded VNF Package Send PATCH Request for individual OnBoarded VNF Package Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response @@ -1085,6 +1185,7 @@ Send PATCH Request for individual OnBoarded VNF Package Send DELETE Request for individual OnBoarded VNF Package Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId} ${output}= Output response @@ -1093,6 +1194,7 @@ Send DELETE Request for individual OnBoarded VNF Package Get single file VNFD in Individual OnBoarded VNF Package in Plain Format Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response @@ -1101,6 +1203,7 @@ Get single file VNFD in Individual OnBoarded VNF Package in Plain Format Get VNFD in Individual OnBoarded VNF Package in Zip Format Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response @@ -1110,6 +1213,7 @@ Get single file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response @@ -1119,6 +1223,7 @@ Get multi file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response @@ -1127,6 +1232,7 @@ Get multi file VNFD in Individual OnBoarded VNF Package in Plain or Zip Format Get multi file VNFD in Individual OnBoarded VNF Package in Plain Format Log Trying to get a negative case performing a get on a VNFD from a given VNF Package present in the NFVO Catalogue. Accept will be text/plain but VNFD is composed my multiple files. Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndIdZipVnfd}/vnfd ${output}= Output response @@ -1136,6 +1242,7 @@ Get VNFD in Individual OnBoarded VNF Package with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${erroneousVnfdId}/vnfd ${output}= Output response @@ -1145,6 +1252,7 @@ Get VNFD in Individual OnBoarded VNF Package Content with conflict due to onboar Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/vnfd ${output}= Output response @@ -1153,6 +1261,7 @@ Get VNFD in Individual OnBoarded VNF Package Content with conflict due to onboar Send POST Request for VNFD in individual OnBoarded VNF Package Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response @@ -1161,6 +1270,7 @@ Send POST Request for VNFD in individual OnBoarded VNF Package Send PUT Request for VNFD in individual OnBoarded VNF Package Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response @@ -1169,6 +1279,7 @@ Send PUT Request for VNFD in individual OnBoarded VNF Package Send PATCH Request for VNFD in individual OnBoarded VNF Package Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd ${output}= Output response @@ -1177,6 +1288,7 @@ Send PATCH Request for VNFD in individual OnBoarded VNF Package Send DELETE Request for VNFD in individual OnBoarded VNF Package Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndIdZipVnfd}/vnfd ${output}= Output response @@ -1185,6 +1297,7 @@ Send DELETE Request for VNFD in individual OnBoarded VNF Package GET Individual OnBoarded VNF Package Content Log Trying to get a VNF Package Content Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/package_content ${output}= Output response @@ -1195,6 +1308,7 @@ GET Individual OnBoarded VNF Package Content with Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${range}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/package_content Unset Headers ["Range"] @@ -1206,6 +1320,7 @@ GET Individual OnBoarded VNF Package Content with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/package_content Unset Headers ["Range"] @@ -1215,6 +1330,7 @@ GET Individual OnBoarded VNF Package Content with invalid Range Request GET Individual OnBoarded VNF Package Content with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${erroneousVnfdId}/package_content ${output}= Output response @@ -1223,6 +1339,7 @@ GET Individual OnBoarded VNF Package Content with invalid resource identifier GET Content for OnBoarded VNF Package in onboarding state different from ONBOARDED Log Trying to get a VNF Package content present in the NFVO Catalogue, but not in ONBOARDED operationalStatus Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/package_content ${output}= Output response @@ -1230,6 +1347,7 @@ GET Content for OnBoarded VNF Package in onboarding state different from ONBOARD GET Individual OnBoarded VNF Package Artifact Log Trying to get a VNF Package Artifact + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response @@ -1237,6 +1355,7 @@ GET Individual OnBoarded VNF Package Artifact GET Individual OnBoarded VNF Package Artifact in octet stream format Log Trying to get a VNF Package Artifact + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfdOctetStreamId}/artifacts/${artifactPath} ${output}= Output response @@ -1246,6 +1365,7 @@ GET Individual OnBoarded VNF Package Artifact with Range Request Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Range": "${range}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} Unset Headers ["Range"] @@ -1257,6 +1377,7 @@ GET Individual OnBoarded VNF Package Artifact with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} Unset Headers ["Range"] @@ -1265,6 +1386,7 @@ GET Individual OnBoarded VNF Package Artifact with invalid Range Request GET Individual OnBoarded VNF Package Artifact with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${erroneousVnfdId}/artifacts/${artifactPath} ${output}= Output response @@ -1272,6 +1394,7 @@ GET Individual OnBoarded VNF Package Artifact with invalid resource identifier GET Artifact for OnBoarded VNF Package in onboarding state different from ONBOARDED Log Trying to get a VNF Package artifact present in the NFVO Catalogue, but not in ONBOARDED operationalStatus + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/artifacts/${artifactPath} ${output}= Output response @@ -1280,6 +1403,7 @@ GET Artifact for OnBoarded VNF Package in onboarding state different from ONBOAR Send POST Request for individual OnBoarded VNF Package Artifact Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response @@ -1288,6 +1412,7 @@ Send POST Request for individual OnBoarded VNF Package Artifact Send PUT Request for individual OnBoarded VNF Package Artifact Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response @@ -1296,6 +1421,7 @@ Send PUT Request for individual OnBoarded VNF Package Artifact Send PATCH Request for individual OnBoarded VNF Package Artifact Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response @@ -1304,6 +1430,7 @@ Send PATCH Request for individual OnBoarded VNF Package Artifact Send DELETE Request for individual OnBoarded VNF Package Artifact Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath} ${output}= Output response @@ -1313,6 +1440,7 @@ Get multi file VNFD in Individual OnBoarded VNF Package with security informatio Log Trying to get a VNFD from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/vnfd/include_signatures ${output}= Output response @@ -1322,6 +1450,7 @@ Get multi file VNFD in Individual VNF Package with security information Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd/include_signatures ${output}= Output response @@ -1330,6 +1459,7 @@ Get multi file VNFD in Individual VNF Package with security information GET Individual VNF Package Artifact with security information Log Trying to get a VNF Package Artifact Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures ${output}= Output response @@ -1338,6 +1468,7 @@ GET Individual VNF Package Artifact with security information GET Individual OnBoarded VNF Package Artifact with security information Log Trying to get a VNF Package Artifact Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures ${output}= Output response @@ -1345,6 +1476,7 @@ GET Individual OnBoarded VNF Package Artifact with security information GET Individual VNF Package Artifact with encrypted artifact Log Trying to get a VNF Package Artifact + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vndEncryptedArtifactID}/artifacts/${artifactPath} ${output}= Output response @@ -1352,6 +1484,7 @@ GET Individual VNF Package Artifact with encrypted artifact GET Individual OnBoarded VNF Package Artifact with encrypted artifact Log Trying to get a VNF Package Artifact + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndEncryptedArtifactID}/artifacts/${artifactPath} ${output}= Output response @@ -1360,6 +1493,7 @@ GET Individual OnBoarded VNF Package Artifact with encrypted artifact GET Individual VNF Package Artifact with incompatable header Log Trying to get a VNF Package Artifact Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures ${output}= Output response @@ -1368,6 +1502,7 @@ GET Individual VNF Package Artifact with incompatable header GET Individual OnBoarded VNF Package Artifact with incompatable header Log Trying to get a VNF Package Artifact Set Headers {"Accept": "${ACCEPT_PLAIN}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/artifacts/${artifactPath}/include_signatures ${output}= Output response @@ -1377,6 +1512,7 @@ GET Individual VNF Package Artifact with permitted authorization scope Log Trying to get a VNF Package Artifact with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${ARTIFACT_READONLY_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response @@ -1386,6 +1522,7 @@ GET Individual VNF Package Artifact with not permitted authorization scope Log Trying to get a VNF Package Artifact with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${ARTIFACT_READONLY_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response @@ -1394,6 +1531,7 @@ GET Individual VNF Package Artifact with not permitted authorization scope Get Manifest in Individual VNF Package Log Trying to get content of manifest file from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response @@ -1403,6 +1541,7 @@ Get Manifest in Individual VNF Package with security information Log Trying to get a manifest from a given VNF Package present in the NFVO Catalogue with security certificates Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest/include_signatures ${output}= Output response @@ -1412,6 +1551,7 @@ Get Manifest in Individual VNF Package with conflict due to onboarding state Log Trying to get a manifest from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/manifest ${output}= Output response @@ -1422,6 +1562,7 @@ Get Manifest in Individual VNF Package with permitted authorization scope Set Headers {"Accept": "${ACCEPT_ZIP}"} ${scopeValue}= Create Dictionary scopeValue=${MANIFEST_READONLY_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response @@ -1432,6 +1573,7 @@ Get Manifest in Individual VNF Package with not permitted authorization scope Set Headers {"Accept": "${ACCEPT_ZIP}"} ${scopeValue}= Create Dictionary scopeValue=${MANIFEST_READONLY_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response @@ -1440,6 +1582,7 @@ Get Manifest in Individual VNF Package with not permitted authorization scope Send POST Request for Manifest in individual VNF Package Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response @@ -1448,6 +1591,7 @@ Send POST Request for Manifest in individual VNF Package Send PUT Request for Manifest in individual VNF Package Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response @@ -1456,6 +1600,7 @@ Send PUT Request for Manifest in individual VNF Package Send PATCH Request for Manifest in individual VNF Package Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response @@ -1464,6 +1609,7 @@ Send PATCH Request for Manifest in individual VNF Package Send DELETE Request for Manifest in individual VNF Package Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/manifest ${output}= Output response @@ -1472,6 +1618,7 @@ Send DELETE Request for Manifest in individual VNF Package Get Manifest in Individual OnBoarded VNF Package Log Trying to get content of manifest file from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response @@ -1481,6 +1628,7 @@ Get Manifest in Individual OnBoarded VNF Package with security information Log Trying to get a manifest from a given OnBoarded VNF Package present in the NFVO Catalogue with security certificates Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndIdZipVnfd}/manifest/include_signatures ${output}= Output response @@ -1490,6 +1638,7 @@ Get Manifest in Individual OnBoarded VNF Package with conflict due to onboarding Log Trying to get a manifest from a given OnBoarded VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfdId}/manifest ${output}= Output response @@ -1498,6 +1647,7 @@ Get Manifest in Individual OnBoarded VNF Package with conflict due to onboarding Send POST Request for Manifest in individual OnBoarded VNF Package Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response @@ -1506,6 +1656,7 @@ Send POST Request for Manifest in individual OnBoarded VNF Package Send PUT Request for Manifest in individual OnBoarded VNF Package Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response @@ -1514,6 +1665,7 @@ Send PUT Request for Manifest in individual OnBoarded VNF Package Send PATCH Request for Manifest in individual OnBoarded VNF Package Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response @@ -1522,6 +1674,7 @@ Send PATCH Request for Manifest in individual OnBoarded VNF Package Send DELETE Request for Manifest in individual OnBoarded VNF Package Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vndId}/manifest ${output}= Output response @@ -1530,6 +1683,7 @@ Send DELETE Request for Manifest in individual OnBoarded VNF Package Get Artifact in VNF Package Log Trying to get Artifact in VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response @@ -1538,6 +1692,7 @@ Get Artifact in VNF Package Get Artifact in VNF Package with exclude_all_mano_artifacts parameter Log Trying to get Artifact in VNF Package with exclude_all_mano_artifacts Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts ${output}= Output response @@ -1546,6 +1701,7 @@ Get Artifact in VNF Package with exclude_all_mano_artifacts parameter Get Artifact in VNF Package with include_external_artifacts parameter Log Trying to get Artifact in VNF Package with include_external_artifacts Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/include_external_artifacts ${output}= Output response @@ -1554,6 +1710,7 @@ Get Artifact in VNF Package with include_external_artifacts parameter Get Artifact in VNF Package with exclude_all_non_mano_artifacts parameter Log Trying to get Artifact in VNF Package with security certificates Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts ${output}= Output response @@ -1563,6 +1720,7 @@ Get Artifact in VNF Package with select_non_mano_artifact_sets parameter Log Trying to get Artifact in VNF Package with security certificates Pass Execution If ${NFVO_non-MANO_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/select_non_mano_artifact_sets=${non_mano_artifact_sets} ${output}= Output response @@ -1571,6 +1729,7 @@ Get Artifact in VNF Package with select_non_mano_artifact_sets parameter Get Artifact in VNF Package with include_signatures parameter Log Trying to get Artifact in VNF Package with security certificates Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/include_signatures ${output}= Output response @@ -1580,6 +1739,7 @@ Get Artifact in VNF Package with Range Request Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Range": "${range}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts Unset Headers ["Range"] @@ -1589,6 +1749,7 @@ Get Artifact in VNF Package with Range Request Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets Log Trying to get Artifact in VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts&select_non_mano_artifact_sets=${non_mano_artifact_sets} ${output}= Output response @@ -1597,6 +1758,7 @@ Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_m Get Artifact in VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts Log Trying to get Artifact in VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts&exclude_all_non_mano_artifacts ${output}= Output response @@ -1604,6 +1766,7 @@ Get Artifact in VNF Package with exclude_all_non_mano_artifacts and exclude_all_ GET Artifact of VNF Package in onboarding state different from ONBOARDED Log Trying to get a VNF Package artifact present in the NFVO Catalogue, but not in ONBOARDED operationalStatus + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts ${output}= Output response @@ -1614,6 +1777,7 @@ GET VNF Package Artifact with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts Unset Headers ["Range"] @@ -1623,6 +1787,7 @@ GET VNF Package Artifact with invalid Range Request Send POST Request for VNF Package Artifact Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response @@ -1631,6 +1796,7 @@ Send POST Request for VNF Package Artifact Send PUT Request for VNF Package Artifact Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response @@ -1639,6 +1805,7 @@ Send PUT Request for VNF Package Artifact Send PATCH Request for VNF Package Artifact Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response @@ -1647,6 +1814,7 @@ Send PATCH Request for VNF Package Artifact Send DELETE Request for VNF Package Artifact Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response @@ -1655,6 +1823,7 @@ Send DELETE Request for VNF Package Artifact Get Artifact in OnBoarded VNF Package Log Trying to get Artifact in OnBoarded VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response @@ -1663,6 +1832,7 @@ Get Artifact in OnBoarded VNF Package Get Artifact in OnBoarded VNF Package with exclude_all_mano_artifacts parameter Log Trying to get Artifact in OnBoarded VNF Package with exclude_all_mano_artifacts Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts ${output}= Output response @@ -1671,6 +1841,7 @@ Get Artifact in OnBoarded VNF Package with exclude_all_mano_artifacts parameter Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts parameter Log Trying to get Artifact in OnBoarded VNF Package with security certificates Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts ${output}= Output response @@ -1679,6 +1850,7 @@ Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts parame Get Artifact in OnBoarded VNF Package with include_external_artifacts parameter Log Trying to get Artifact in OnBoarded VNF Package with include_external_artifacts Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/include_external_artifacts ${output}= Output response @@ -1688,6 +1860,7 @@ Get Artifact in OnBoarded VNF Package with select_non_mano_artifact_sets paramet Log Trying to get Artifact in OnBoarded VNF Package with security certificates Pass Execution If ${NFVO_non-MANO_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/select_non_mano_artifact_sets=${non_mano_artifact_sets} ${output}= Output response @@ -1696,6 +1869,7 @@ Get Artifact in OnBoarded VNF Package with select_non_mano_artifact_sets paramet Get Artifact in OnBoarded VNF Package with include_signatures parameter Log Trying to get Artifact in OnBoarded VNF Package with security certificates Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/include_signatures ${output}= Output response @@ -1705,6 +1879,7 @@ Get Artifact in OnBoarded VNF Package with Range Request Log Trying to get an Artifact using RANGE Header and using an NFVO that can handle it Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Range": "${range}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts Unset Headers ["Range"] @@ -1714,6 +1889,7 @@ Get Artifact in OnBoarded VNF Package with Range Request Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and select_non_mano_artifact_sets Log Trying to get Artifact in OnBoarded VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts&select_non_mano_artifact_sets=${non_mano_artifact_sets} ${output}= Output response @@ -1722,6 +1898,7 @@ Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and se Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and exclude_all_mano_artifacts Log Trying to get Artifact in OnBoarded VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts&exclude_all_non_mano_artifacts ${output}= Output response @@ -1729,6 +1906,7 @@ Get Artifact in OnBoarded VNF Package with exclude_all_non_mano_artifacts and ex GET Artifact of OnBoarded VNF Package in onboarding state different from ONBOARDED Log Trying to get a OnBoarded VNF Package artifact present in the NFVO Catalogue, but not in ONBOARDED operationalStatus + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${onboardingStateVnfPkgId}/artifacts ${output}= Output response @@ -1739,6 +1917,7 @@ GET OnBoarded VNF Package Artifact with invalid Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts Unset Headers ["Range"] @@ -1750,6 +1929,7 @@ Get Artifact in VNF Package with permitted authorization scope Set Headers {"Accept": "${ACCEPT_ZIP}"} ${scopeValue}= Create Dictionary scopeValue=${BULK_ARTIFACTS_READONLY_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response @@ -1760,6 +1940,7 @@ Get Artifact in VNF Package with not permitted authorization scope Set Headers {"Accept": "${ACCEPT_ZIP}"} ${scopeValue}= Create Dictionary scopeValue=${BULK_ARTIFACTS_READONLY_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response @@ -1768,6 +1949,7 @@ Get Artifact in VNF Package with not permitted authorization scope Send POST Request for OnBoarded VNF Package Artifact Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response @@ -1776,6 +1958,7 @@ Send POST Request for OnBoarded VNF Package Artifact Send PUT Request for OnBoarded VNF Package Artifact Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response @@ -1784,6 +1967,7 @@ Send PUT Request for OnBoarded VNF Package Artifact Send PATCH Request for OnBoarded VNF Package Artifact Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response @@ -1792,6 +1976,7 @@ Send PATCH Request for OnBoarded VNF Package Artifact Send DELETE Request for OnBoarded VNF Package Artifact Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages/${vnfPackageId}/artifacts ${output}= Output response @@ -1801,6 +1986,7 @@ GET OnBoarded VNF Packages with fields and exclude_default attribute selector Log Trying to get all OnBoarded VNF Packages present in the NFVO Catalogue, using fields Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use fields parameter Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/onboarded_vnf_packages?fields=${fields}&exclude_default ${output}= Output response diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index 2085a899..fec4807d 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -38,6 +38,7 @@ ${onboardingStateVnfdId} f9f130e4-05eb-4082-a676-4c97d13a883d ${apiRoot} / ${apiMajorVersion} v2 ${apiName} vnfpkgm +${API_VERSION} 2.12.0 ${NFVO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint -- GitLab From b0526955b0d9c8723e662f56191774a5c1f4de73 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 12:42:58 +0500 Subject: [PATCH 071/141] test different methods of notification endpoint of VNF Packagement API as per SOL 003 specification version 5.1.1 --- .../NotificationEndpoint.robot | 45 +++++++++++++++++++ .../VNFPackageManagementKeywords.robot | 35 ++++++++++++++- 2 files changed, 79 insertions(+), 1 deletion(-) diff --git a/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot b/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot index 930b3277..7b779838 100644 --- a/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot @@ -2,6 +2,7 @@ Library String Library JSONSchemaLibrary schemas/ Resource environment/variables.txt +Resource VNFPackageManagementKeywords.robot Library OperatingSystem Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false @@ -31,6 +32,50 @@ VNF Package Change Notification ... Post-Conditions: none Post VNF Package Change Notification Check HTTP Response Status Code Is 204 +Test the Notification Endpoint - Successful + [Documentation] Test ID: 7.3.3.12.3 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 10.4.9.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.3.12.4 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 10.4.9.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.3.12.5 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 10.4.9.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.3.12.6 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 10.4.9.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 *** Keywords *** Check resource existence and get CallbackUri diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 9eb760fb..331ce525 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -2163,4 +2163,37 @@ Match the VNF subscription Response Attributes with Descriptors JWT Encode [Arguments] ${payload} ${key} ${algorithm} ${encoded}= Evaluate jwt.encode(${payload}, ${key}, ${algorithm}) - [Return] ${encoded} \ No newline at end of file + [Return] ${encoded} +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PUT notification endpoint + Log Trying to perform a PUT. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PATCH notification endpoint + Log Trying to perform a PATCH. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + Log Trying to perform a DELETE. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file -- GitLab From 95c9f14121835f831096b6b237fee61b1f2c8e27 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 12:48:35 +0500 Subject: [PATCH 072/141] Editorial Change: Move Keywords from NotificationEndpoint to VNFPackageManagementKeywords file --- .../NotificationEndpoint.robot | 40 ------------------- .../VNFPackageManagementKeywords.robot | 34 +++++++++++++++- 2 files changed, 33 insertions(+), 41 deletions(-) diff --git a/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot b/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot index 7b779838..09f4390d 100644 --- a/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFPackageManagement-API/NotificationEndpoint.robot @@ -76,43 +76,3 @@ DELETE Notification endpoint - Method Not Implemented ... Post-Conditions: none DELETE notification endpoint Check HTTP Response Status Code Is 405 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Set Headers {"Version": "${API_VERSION}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body PkgmSubscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post VNF Package Onboarding Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Set Headers {"Version": "${API_VERSION}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${template} = Get File jsons/VnfPackageOnboardingNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPackageId=${vnfPackageId} vndId=${vndId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post VNF Package Change Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Set Headers {"Version": "${API_VERSION}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${template} = Get File jsons/VnfPackageChangeNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPackageId=${vnfPackageId} vndId=${vndId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 331ce525..fb871440 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -2196,4 +2196,36 @@ DELETE notification endpoint Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${callbackResp} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Set Global Variable ${response} ${outputResponse} +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body PkgmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri +Post VNF Package Onboarding Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VnfPackageOnboardingNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPackageId=${vnfPackageId} vndId=${vndId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Package Change Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VnfPackageChangeNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfPackageId=${vnfPackageId} vndId=${vndId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file -- GitLab From 41eb463ce889d94698724c9e604077ac3086b8b9 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Mon, 6 Jan 2025 15:22:18 +0500 Subject: [PATCH 073/141] API version update of VNFD descriptors --- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index a43587c6..f8342b0b 100644 --- a/SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -44,7 +44,7 @@ node_types: type: list entry_schema: type: string - default: [ 'etsivnfm:v4.5.1' ] + default: [ 'etsivnfm:v5.1.1' ] interfaces: Vnflcm: type: "tosca.interfaces.nfv.Vnflcm" -- GitLab From b0a9b70d9b08e145ddecd7a46556a8d9705ef14b Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 6 Dec 2024 16:39:19 +0500 Subject: [PATCH 074/141] Update SOL003 document version in all testcases of VNF Snapshot Package Management API --- .../IndividualVNFSnapshotPackage.robot | 16 ++++----- ...IndividualVNFSnapshotPackageArtifact.robot | 22 ++++++------ .../VNFSnapshotPackageContent.robot | 18 +++++----- .../VNFSnapshotPackages.robot | 34 +++++++++---------- 4 files changed, 45 insertions(+), 45 deletions(-) diff --git a/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot index 4bacf523..f8888a3f 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot @@ -7,7 +7,7 @@ POST Individual VNF Snapshot Package - Method not implemented ... Test title: POST Individual VNF Snapshot Package - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Information about an individual VNF Snapshot Package - SUCCESSFUL ... Test title: GET Information about an individual VNF Snapshot Package - SUCCESSFUL ... Test objective: The objective is to query information about a VNF Snapshot Package resource ... Pre-conditions: none - ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Information about an individual VNF Snapshot Package - NOT FOUND ... Test title: GET Information about an individual VNF Snapshot Package - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot Package fails when using an invalid resource identifier. ... Pre-conditions: At least one individual VNF Snapshot Package is available in the NFV-MANO. - ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ PUT Individual VNF Snapshot Package - Method not implemented ... Test title: PUT Individual VNF Snapshot Package - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package not modified @@ -57,7 +57,7 @@ PATCH Individual VNF Snapshot Package - Method Not implemented ... Test title: PATCH Individual VNF Snapshot Package ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package modified @@ -69,7 +69,7 @@ DELETE Individual VNF Snapshot Package - Method Not implemented ... Test title: DELETE Individual VNF Snapshot Package - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package deleted @@ -81,7 +81,7 @@ GET Information about an individual VNF Snapshot Package - SUCCESSFUL with permi ... Test title: GET Information about an individual VNF Snapshot Package - SUCCESSFUL with permitted authorization scope ... Test objective: The objective is to query information about a VNF Snapshot Package resource ... Pre-conditions: none - ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ GET Information about an individual VNF Snapshot Package with not permitted auth ... Test title: GET Information about an individual VNF Snapshot Package with not permitted authorization scope ... Test objective: The objective is to query information about a VNF Snapshot Package resource ... Pre-conditions: none - ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot index 7e1b637f..5b0ed963 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot @@ -7,7 +7,7 @@ POST Individual VNF Snapshot Package Artifact - Method not implemented ... Test title: POST Individual VNF Snapshot Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Individual VNF Snapshot Package Artifact - Complete File ... Test title: GET Information about an individual VNF Snapshot Package - Complete File ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. ... Pre-conditions: none - ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Individual VNF Snapshot Package Artifact - Partial Content ... Test title: GET Individual VNF Snapshot Package Artifact - Partial Content ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. ... Pre-conditions: none - ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -47,7 +47,7 @@ GET Individual VNF Snapshot Package Artifact - Range Request Not Supported ... Test title: GET Information about an individual VNF Snapshot Package - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. ... Pre-conditions: none - ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support range requests ... Post-Conditions: none @@ -60,7 +60,7 @@ GET Individual VNF Snapshot Package Artifact - Range Not Satisfiable ... Test title: GET Information about an individual VNF Snapshot Package - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. ... Pre-conditions: none - ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -72,7 +72,7 @@ GET Individual VNF Snapshot Package Artifact - Conflict ... Test title: GET Information about an individual VNF Snapshot Package - Conflict ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Pre-conditions: none - ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Post-Conditions: none @@ -84,7 +84,7 @@ PUT Individual VNF Snapshot Package Artifact - Method not implemented ... Test title: PUT Individual VNF Snapshot Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package not modified @@ -96,7 +96,7 @@ PATCH Individual VNF Snapshot Package Artifact - Method Not implemented ... Test title: PATCH Individual VNF Snapshot Package Artifact ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -108,7 +108,7 @@ DELETE Individual VNF Snapshot Package Artifact - Method Not implemented ... Test title: DELETE Individual VNF Snapshot Package Artifact - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -120,7 +120,7 @@ GET Individual VNF Snapshot Package Artifact - Complete File with permitted auth ... Test title: GET Information about an individual VNF Snapshot Package - Complete File with permitted authorization scope ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -133,7 +133,7 @@ GET Individual VNF Snapshot Package Artifact - Complete File with not permitted ... Test title: GET Information about an individual VNF Snapshot Package - Complete File with not permitted authorization scope ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method with not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot index 5a04bbd1..aadde8a9 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot @@ -7,7 +7,7 @@ POST VNF Snapshot Package Content - Method not implemented ... Test title: POST VNF Snapshot Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET VNF Snapshot Package Content - Complete File ... Test title: GET Information about an individual VNF Snapshot Package - Complete File ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. ... Pre-conditions: none - ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET VNF Snapshot Package Content - Partial Content ... Test title: GET VNF Snapshot Package Content - Partial Content ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. ... Pre-conditions: none - ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -47,7 +47,7 @@ GET VNF Snapshot Package Content - Range Request Not Supported ... Test title: GET Information about an individual VNF Snapshot Package - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. ... Pre-conditions: none - ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support range requests ... Post-Conditions: none @@ -60,7 +60,7 @@ GET VNF Snapshot Package Content - Range Not Satisfiable ... Test title: GET Information about an individual VNF Snapshot Package - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. ... Pre-conditions: none - ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -72,7 +72,7 @@ GET VNF Snapshot Package Content - Conflict ... Test title: GET Information about an individual VNF Snapshot Package - Conflict ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Pre-conditions: none - ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Post-Conditions: none @@ -84,7 +84,7 @@ PUT VNF Snapshot Package Content - Method not implemented ... Test title: PUT VNF Snapshot Package Content - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package not modified @@ -96,7 +96,7 @@ PATCH VNF Snapshot Package Content - Method Not implemented ... Test title: PATCH VNF Snapshot Package Content ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -108,7 +108,7 @@ DELETE VNF Snapshot Package Content - Method Not implemented ... Test title: DELETE VNF Snapshot Package Content - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot index 0cd1588a..91cae0e3 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot @@ -7,7 +7,7 @@ POST VNF Snapshot Packages - Method not implemented ... Test title: POST VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET information about multiple VNF Snapshot Packages ... Test title: GET information about multiple VNF Snapshot Packages ... Test objective: The objective is to get information about multiples VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET information about multiple VNF Snapshot Packages Bad Request Invalid attribu ... Test title: GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ GET information about multiple VNF Snapshot Packages Bad Request Invalid attribu ... Test title: GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -58,7 +58,7 @@ GET information about multiple VNF Snapshot Packages with "all_fields" attribute ... Test title: GET information about multiple VNF Snapshot Packages with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -71,7 +71,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_default" attr ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET information about multiple VNF Snapshot Packages with "fields" attribute sel ... Test title: GET information about multiple VNF Snapshot Packages with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_default" and ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -110,7 +110,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_fields" attri ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ GET VNF Snapshot Packages - Bad Request Response too Big ... Test title: GET VNF Snapshot Packages - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing VNF Snapshot Packages list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support paged response. ... Post-Conditions: none @@ -136,7 +136,7 @@ GET VNF Snapshot Packages as Paged Response ... Test title: GET VNF Snapshot Packages as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshot Packages as paged response. ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports paged response. ... Post-Conditions: none @@ -149,7 +149,7 @@ PUT VNF Snapshot Packages - Method not implemented ... Test title: PUT VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -161,7 +161,7 @@ PATCH VNF Snapshot Packages - Method not implemented ... Test title: PATCH VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -173,7 +173,7 @@ DELETE VNF Snapshot Packages - Method not implemented ... Test title: DELETE VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF snapshot package is not deleted @@ -185,7 +185,7 @@ GET information about multiple VNF Snapshot Packages using filter ... Test title: GET information about multiple VNF Snapshot Packages using filter ... Test objective: The objective is to get information about multiples VNF Snapshot Packages using filter ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -198,7 +198,7 @@ GET information about multiple VNF Snapshot Packages with permitted authorizatio ... Test title: GET information about multiple VNF Snapshot Packages with permitted authorization scope ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -211,7 +211,7 @@ GET information about multiple VNF Snapshot Packages with not permitted authoriz ... Test title: GET information about multiple VNF Snapshot Packages with not permitted authorization scope ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 2bc91ea48c7ac39095ecddfa15bb0a3802821513 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 16:22:55 +0500 Subject: [PATCH 075/141] Fix issue #188: Set version Header --- ...VnfSnapshotPackageManagementKeywords.robot | 51 +++++++++++++++++++ .../environment/variables.txt | 1 + 2 files changed, 52 insertions(+) diff --git a/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot index 7c531704..a6e48ec0 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot +++ b/SOL003/VNFSnapshotPackageManagement-API/VnfSnapshotPackageManagementKeywords.robot @@ -9,6 +9,7 @@ Library String *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -16,6 +17,7 @@ POST API Version GET API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -23,6 +25,7 @@ GET API Version PUT API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -30,6 +33,7 @@ PUT API Version PATCH API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -37,6 +41,7 @@ PATCH API Version DELETE API Version Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -44,6 +49,7 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -51,6 +57,7 @@ POST API Version with apiMajorVersion GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -58,6 +65,7 @@ GET API Version with apiMajorVersion PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -65,6 +73,7 @@ PUT API Version with apiMajorVersion PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -72,6 +81,7 @@ PATCH API Version with apiMajorVersion DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -95,6 +105,7 @@ POST VNF Snapshot Packages Log Trying to perform a POST. This method should not be implemented. Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type":"${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages ${outputResponse}= Output response @@ -104,6 +115,7 @@ GET multiple VNF Snapshot Packages Log Query VNF The GET method queries information about multiple VNF Snapshot Packages. Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages ${outputResponse}= Output response @@ -113,6 +125,7 @@ GET multiple VNF Snapshot Packages with bad attribute Log Query VNF The GET method queries information about multiple VNF Snapshot Packages. Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?attribute_not_exist=some_value ${outputResponse}= Output response @@ -122,6 +135,7 @@ GET multiple VNF Snapshot Packages with bad filter Log Query VNF The GET method queries information about multiple VNF Snapshot Packages. Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?${NEG_FILTER} ${outputResponse}= Output response @@ -131,6 +145,7 @@ GET multiple VNF Snapshot Packages using filter Log Query VNF The GET method queries information about multiple VNF Snapshot Packages. Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?${POS_FILTER} ${outputResponse}= Output response @@ -139,6 +154,7 @@ GET multiple VNF Snapshot Packages using filter GET multiple VNF Snapshot Packages with all_fields attribute selector Log Query status information about multiple VNF Snapshot Packages, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?all_fields ${output}= Output response @@ -147,6 +163,7 @@ GET multiple VNF Snapshot Packages with all_fields attribute selector GET multiple VNF Snapshot Packages with exclude_default attribute selector Log Query status information about multiple VNF Snapshot Packages using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?exclude_default ${output}= Output response @@ -155,6 +172,7 @@ GET multiple VNF Snapshot Packages with exclude_default attribute selector GET multiple VNF Snapshot Packages with fields attribute selector Log Query status information about multiple VNF Snapshot Packages, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?fields=${fields} ${output}= Output response @@ -163,6 +181,7 @@ GET multiple VNF Snapshot Packages with fields attribute selector GET multiple VNF Snapshot Packages with exclude_default and fields attribute selector Log Query status information about multiple VNF Snapshot Packages, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?fields=${fields}&exclude_default ${output}= Output response @@ -171,6 +190,7 @@ GET multiple VNF Snapshot Packages with exclude_default and fields attribute sel GET multiple VNF Snapshot Packages with exclude_fields attribute selector Log Query status information about multiple VNF Snapshot Packages, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages?exclude_fields=${fields} ${output}= Output response @@ -180,6 +200,7 @@ GET multiple VNF Snapshot Packages with permitted authorization scope Log Query VNF The GET method queries information about multiple VNF Snapshot Packages with permitted authorization scope . Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_PACKAGES_READONLY_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} @@ -191,6 +212,7 @@ GET multiple VNF Snapshot Packages with not permitted authorization scope Log Query VNF The GET method queries information about multiple VNF Snapshot Packages with not permitted authorization scope . Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_PACKAGES_READONLY_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} @@ -212,6 +234,7 @@ PUT VNF Snapshot Packages log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages ${outputResponse}= Output response @@ -220,12 +243,14 @@ PUT VNF Snapshot Packages PATCH VNF Snapshot Packages Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE VNF Snapshot Packages Log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages ${outputResponse}= Output response @@ -235,6 +260,7 @@ POST individual VNF Snapshot Package log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} ${outputResponse}= Output response @@ -244,6 +270,7 @@ GET individual VNF Snapshot Package log Trying to get information about an individual VNF Snapshot Package Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} ${outputResponse}= Output response @@ -253,6 +280,7 @@ GET individual VNF Snapshot Package with invalid URI log Trying to get information about an individual VNF Snapshot Package Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${invalidVnfSnapshotPkgId} ${outputResponse}= Output response @@ -262,6 +290,7 @@ GET individual VNF Snapshot Package with permitted authorization scope log Trying to get information about an individual VNF Snapshot Package with permitted authorization scope Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_PACKAGES_READONLY_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} @@ -273,6 +302,7 @@ GET individual VNF Snapshot Package with not permitted authorization scope log Trying to get information about an individual VNF Snapshot Package with not permitted authorization scope Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_PACKAGES_READONLY_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} @@ -284,6 +314,7 @@ PUT individual VNF Snapshot Package log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} ${outputResponse}= Output response @@ -293,6 +324,7 @@ PATCH individual VNF Snapshot Package log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} ${outputResponse}= Output response @@ -301,6 +333,7 @@ PATCH individual VNF Snapshot Package DELETE individual VNF Snapshot Package log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId} ${outputResponse}= Output response @@ -310,6 +343,7 @@ POST VNF Snapshot Package Content log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT_ZIP}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content ${outputResponse}= Output response @@ -318,6 +352,7 @@ POST VNF Snapshot Package Content GET VNF Snapshot Package Content - Complete log Trying to fetch the complete contents of VNF Snapshot Package Set Headers {"Accept":"${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content ${outputResponse}= Output response @@ -328,6 +363,7 @@ GET VNF Snapshot Package Content - Range Request log Trying to get information about an individual VNF Snapshot Package using a range request Set Headers {"Accept":"${ACCEPT_ZIP}"} Set Headers {"Range":"${range}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content Unset Headers ["Range"] @@ -339,6 +375,7 @@ GET VNF Snapshot Package Content - Invalid Range log Trying to get information about an individual VNF Snapshot Package with invalid range Set Headers {"Accept":"${ACCEPT_ZIP}"} Set Headers {"Range":"${erroneousRange}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content Unset Headers ["Range"] @@ -348,6 +385,7 @@ GET VNF Snapshot Package Content - Invalid Range GET VNF Snapshot Package Content - Not Available Log Trying to fetch the contents of a VNF Snapshot Package which is not in AVAILABLE state Set Headers {"Accept":"${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId_notInAvailableState}/package_content ${outputResponse}= Output response @@ -375,6 +413,7 @@ PUT VNF Snapshot Package Content log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT_ZIP}"} Set Headers {"Content-Type": "${CONTENT_TYPE_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content ${outputResponse}= Output response @@ -384,6 +423,7 @@ PATCH VNF Snapshot Package Content log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT_ZIP}"} Set Headers {"Content-Type": "${CONTENT_TYPE_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content ${outputResponse}= Output response @@ -392,6 +432,7 @@ PATCH VNF Snapshot Package Content DELETE VNF Snapshot Package Content log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT_ZIP}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/package_content ${outputResponse}= Output response @@ -401,6 +442,7 @@ POST Individual VNF Snapshot Package Artifact log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT_OCTET}"} Set Headers {"Content-Type": "${CONTENT_TYPE_OCTET}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} ${outputResponse}= Output response @@ -409,6 +451,7 @@ POST Individual VNF Snapshot Package Artifact GET Individual VNF Snapshot Package Artifact - Complete log Trying to fetch the complete contents of an individual VNF Snapshot Package artifact Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} ${outputResponse}= Output response @@ -419,6 +462,7 @@ GET Individual VNF Snapshot Package Artifact - Range Request log Trying to get information about an individual VNF Snapshot Package artifact using a range request Set Headers {"Accept":"${ACCEPT_OCTET}"} Set Headers {"Range":"${range}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} Unset Headers ["Range"] @@ -430,6 +474,7 @@ GET Individual VNF Snapshot Package Artifact - Invalid Range log Trying to get information about an individual VNF Snapshot Package artifact with invalid range Set Headers {"Accept":"${CONTENT_TYPE_OCTET}"} Set Headers {"Range":"${erroneousRange}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} Unset Headers ["Range"] @@ -439,6 +484,7 @@ GET Individual VNF Snapshot Package Artifact - Invalid Range GET Individual VNF Snapshot Package Artifact - Not Available Log Trying to get information about an individual artifact of a VNF Snapshot Package which is not in AVAILABLE state Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId_notInAvailableState}/artifacts/${artifactPath} ${outputResponse}= Output response @@ -447,6 +493,7 @@ GET Individual VNF Snapshot Package Artifact - Not Available GET Individual VNF Snapshot Package Artifact - Complete with permitted authorization scope log Trying to fetch the complete contents of an individual VNF Snapshot Package artifact with permitted authorization scope Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Version": "${API_VERSION}"} ${scopeValue}= Create Dictionary scopeValue=${VNF_ARTIFACTS_READONLY_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} @@ -457,6 +504,7 @@ GET Individual VNF Snapshot Package Artifact - Complete with permitted authoriza GET Individual VNF Snapshot Package Artifact - Complete with not permitted authorization scope log Trying to fetch the complete contents of an individual VNF Snapshot Package artifact with not permitted authorization scope Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Version": "${API_VERSION}"} ${scopeValue}= Create Dictionary scopeValue=${VNF_ARTIFACTS_READONLY_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} @@ -468,6 +516,7 @@ PUT Individual VNF Snapshot Package Artifact log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT_OCTET}"} Set Headers {"Content-Type": "${CONTENT_TYPE_OCTET}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} ${outputResponse}= Output response @@ -477,6 +526,7 @@ PATCH Individual VNF Snapshot Package Artifact log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT_OCTET}"} Set Headers {"Content-Type": "${CONTENT_TYPE_OCTET}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} ${outputResponse}= Output response @@ -485,6 +535,7 @@ PATCH Individual VNF Snapshot Package Artifact DELETE Individual VNF Snapshot Package Artifact log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshot_packages/${vnfSnapshotPkgId}/artifacts/${artifactPath} ${outputResponse}= Output response diff --git a/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt b/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt index f4fabd7e..339109c9 100644 --- a/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFSnapshotPackageManagement-API/environment/variables.txt @@ -25,6 +25,7 @@ ${CONTENT_TYPE_JSON} application/json ${apiRoot} / ${apiMajorVersion} v1 ${apiName} vnfsnapshotpkgm +${API_VERSION} 1.12.0 ${PAGING_SUPPORTED} 1 -- GitLab From b2fd0218b57a0fe14a487435d755e4b6c5d0c69e Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 6 Dec 2024 16:37:59 +0500 Subject: [PATCH 076/141] Update SOL003 document version in all testcases of VNF Virtualised Resources Quota API --- .../IndividualSubscription.robot | 16 +++++----- .../NotificationEndpoint.robot | 2 +- .../Notifications.robot | 2 +- .../Subscriptions.robot | 30 +++++++++---------- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot index 5ee7b532..b308a9c2 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/IndividualSubscription.robot @@ -15,7 +15,7 @@ Create new Virtualised Resources Quota Available Notification individual subscri ... Test title: Create new Virtualised Resources Quota Available Notification individual subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Virtualised Resources Quota Available Notification individual subscription instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ Get Information about an individual subscription ... Test title: Get Information about an individual subscription ... Test objective: The objective is to read an individual Virtualised Resources Quota Available Notification subscription subscribed by the client and perform a JSON schema and content validation of the returned individual subscription data structure ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update a existing Virtualised Resources Quota Available Notification individual subscription instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify a existing Virtualised Resources Quota Available Notification individual subscription instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that Delete method is allowed to remove a existing Virtualised Resources Quota Available Notification individual subscription instance on VNF ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ Get Information about an individual subscription - Not Found ... Test title: Get Information about an individual subscription - Not Found ... Test objective: The objective is to test that the retrieval of an individual Virtualised Resources Quota Available Notification subscription subscribed by the client fils when resource is not present ... Pre-conditions: The subscription with the given id does not exists - ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ Get Information about an individual subscription with permitted authorization sc ... Test title: Get Information about an individual subscription with permitted authorization scope ... Test objective: The objective is to read an individual Virtualised Resources Quota Available Notification subscription subscribed by the client and perform a JSON schema and content validation of the returned individual subscription data structure with permitted authorization scope ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ Get Information about an individual subscription with not permitted authorizatio ... Test title: Get Information about an individual subscription with not permitted authorization scope ... Test objective: The objective is to read an individual Virtualised Resources Quota Available Notification subscription subscribed by the client and perform a JSON schema and content validation of the returned individual subscription data structure with not permitted authorization scope ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot index 6e7b4dc2..83ac0422 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ Vr Quota Availibility Notification ... Test title: Vr Quota Availibility Notification ... Test objective: The objective is to test that Vr Quota Availibility Notification is delivered with success to the notification consumer ... Pre-conditions: The VNF has subscribed to the Vr Quota Availibility resource - ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Notifications.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Notifications.robot index a9468e37..e65a1699 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Notifications.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Notifications.robot @@ -13,7 +13,7 @@ Virtualised Resource Quota Available Notification ... Test title: Virtualised Resource Quota Available Notification ... Test objective: The objective is to test the dispatch of Virtualised Resource Quota Available Notification, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for Virtualised Resource Quota Available Notification is available in the VNFM. - ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot index 3ba5185c..8e667092 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/Subscriptions.robot @@ -15,7 +15,7 @@ Create new Virtualised Resources Quota Available Notification subscription ... Test title: Create new Virtualised Resources Quota Available Notification subscription ... Test objective: The objective is to create a new Virtualised Resources Quota Available Notification subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: no subscription with the same filter and callback Uri exists - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Create new Virtualised Resources Quota Available Notification subscription - DUP ... Test title: Create new Virtualised Resources Quota Available Notification subscription - DUPLICATION ... Test objective: The objective is to create a new Virtualised Resources Quota Available Notification subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: subscription with the same filter and callback Uri exists - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: the VNFM allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists ... Post-Conditions: none @@ -43,7 +43,7 @@ Create new Virtualised Resources Quota Available Notification subscription - NO- ... Test title: Create new Virtualised Resources Quota Available Notification subscription - NO-DUPLICATION ... Test objective: The objective is to create a nduplicated Virtualised Resources Quota Available Notification subscription and verify that the VNF does not allow duplication ... Pre-conditions: subscription with the same filter and callback Uri exists - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: the VNFM decides to not create a duplicate subscription resource ... Post-Conditions: none @@ -56,7 +56,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions ... Test title: GET Virtualised Resources Quota Available Notification Subscriptions ... Test objective: The objective is to retrieve the list of active Virtualised Resources Quota Available Notification subscriptions and perform a JSON schema and content validation of the returned subscriptions data structure ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions with attrib ... Test title: GET Virtualised Resources Quota Available Notification Subscriptions with attribute-based Filter ... Test objective: The objective is to retrieve the list of active Virtualised Resources Quota Available Notification subscriptions and perform a JSON schema and content validation of the returned subscriptions data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ GET Virtualised Resources Quota Available Notification subscriptions - Bad Reque ... Test title: GET Virtualised Resources Quota Available Notification subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to retrieve the list of active Virtualised Resources Quota Available Notification subscriptions with invalid attribute-based filtering parameters, and verify that problem details are returned ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ PUT Virtualised Resources Quota Available Notification subscriptions - Method no ... Test title: PUT Virtualised Resources Quota Available Notification subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update existing Virtualised Resources Quota Available Notification subscriptions instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -107,7 +107,7 @@ PATCH Virtualised Resources Quota Available Notification subscriptions - Method ... Test title: PATCH Virtualised Resources Quota Available Notification subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify Virtualised Resources Quota Available Notification subscriptions instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -119,7 +119,7 @@ DELETE Virtualised Resources Quota Available Notification subscriptions - Method ... Test title: DELETE Virtualised Resources Quota Available Notification subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to delete Virtualised Resources Quota Available Notification subscriptions instance on VNF ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 11.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -131,7 +131,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions as Paged Re ... Test title: GET Virtualised Resources Quota Available Notification Subscriptions as Paged Response ... Test objective: The objective is to retrieve the list of active Virtualised Resources Quota Available Notification subscriptions as a Paged Response. ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the subscription resources ... Post-Conditions: none @@ -144,7 +144,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions as Paged Re ... Test title: GET Virtualised Resources Quota Available Notification Subscriptions as Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query the list of active Virtualised Resources Quota Available Notification subscriptions as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving the list of active Virtualised Resources Quota Available Notification subscriptions as a paged response has been successfully issued (Test ID 7.3.7.1.10) - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the subscription resources ... Post-Conditions: none @@ -156,7 +156,7 @@ GET Virtualised Resources Quota Available Notification subscriptions - Bad Reque ... Test title: GET Virtualised Resources Quota Available Notification subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of active Virtualised Resources Quota Available Notification subscriptions list fails because response is too big, and verify that problem details are returned ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -169,7 +169,7 @@ Create new Virtualised Resources Quota Available Notification Subscription - Unp ... Test title: Create new Virtualised Resources Quota Available Notification Subscription - Unprocessable Content ... Test objective: The objective is to test that content type of the message content is supported and the message content of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -182,7 +182,7 @@ Create new Virtualised Resources Quota Available Notification subscription with ... Test title: Create new Virtualised Resources Quota Available Notification subscription with permitted authorization scope ... Test objective: The objective is to create a new Virtualised Resources Quota Available Notification subscription and perform a JSON schema and content validation of the returned subscription data structure with permitted authorization scope ... Pre-conditions: no subscription with the same filter and callback Uri exists - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -196,7 +196,7 @@ Create new Virtualised Resources Quota Available Notification subscription with ... Test title: Create new Virtualised Resources Quota Available Notification subscription with not permitted authorization scope ... Test objective: The objective is to create a new Virtualised Resources Quota Available Notification subscription and perform a JSON schema and content validation of the returned subscription data structure with not permitted authorization scope ... Pre-conditions: no subscription with the same filter and callback Uri exists - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 8195240353ac13b202e7345140cd89b340414b23 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 18 Dec 2024 17:45:31 +0500 Subject: [PATCH 077/141] update response body schema as per SOL 003 version 5.1.1 --- .../schemas/subscriptions.schema.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/subscriptions.schema.json b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/subscriptions.schema.json index d691e415..5062f0b8 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/subscriptions.schema.json +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/schemas/subscriptions.schema.json @@ -47,7 +47,7 @@ "description": "Match the \"infrastructure resource groups\" that are logical groupings of the virtualised resources assigned to a tenant within an infrastructure Domain.\n", "type": "array", "items": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n", + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" } } @@ -65,16 +65,15 @@ ], "properties": { "self": { - "description": "This type represents a link to a resource.\n", + "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", "required": [ "href" ], "properties": { "href": { - "description": "URI of the referenced resource.\n", - "type": "string", - "format": "url" + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } } } -- GitLab From b479030838ab8e929e0ed7310e5073f83d00411e Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 14:23:53 +0500 Subject: [PATCH 078/141] Fix issue #188: Set Version Header --- .../ApiVersion.robot | 10 ++++++++++ .../NotificationEndpoint.robot | 2 ++ .../VRQANOperationKeywords.robot | 20 +++++++++++++++++++ .../environment/variables.txt | 1 + 4 files changed, 33 insertions(+) diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot index 9f09365b..e7c944ed 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot @@ -131,6 +131,7 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -138,6 +139,7 @@ POST API Version GET API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -145,6 +147,7 @@ GET API Version PUT API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -152,6 +155,7 @@ PUT API Version PATCH API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -159,6 +163,7 @@ PATCH API Version DELETE API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -166,6 +171,7 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -173,6 +179,7 @@ POST API Version with apiMajorVersion GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -180,6 +187,7 @@ GET API Version with apiMajorVersion PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -187,6 +195,7 @@ PUT API Version with apiMajorVersion PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -194,6 +203,7 @@ PATCH API Version with apiMajorVersion DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot index 83ac0422..cbf42d67 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot @@ -24,6 +24,7 @@ Vr Quota Availibility Notification Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 @@ -39,6 +40,7 @@ Post Vr Quota Avail Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/VrQuotaAvailNotification.json ${body}= Format String ${template} subscriptionId=${subscriptionId} diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot index 929c8c00..c47a4653 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot @@ -17,6 +17,7 @@ Create Sessions Check Individual Subscription existence Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 @@ -54,6 +55,7 @@ Check Postcondition VNF Virtualised Resources Quota Available Notification indiv Send Post request for Virtualised Resources Quota Available Notification Individual Subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -62,6 +64,7 @@ Send Post request for Virtualised Resources Quota Available Notification Individ Put Virtualised Resources Quota Available Notification individual Subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -70,6 +73,7 @@ Put Virtualised Resources Quota Available Notification individual Subscription Patch Virtualised Resources Quota Available Notification individual subscription log Trying to perform a Patch. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -78,6 +82,7 @@ Patch Virtualised Resources Quota Available Notification individual subscription Get Virtualised Resources Quota Available Notification individual subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -88,6 +93,7 @@ Get Virtualised Resources Quota Available Notification individual subscription w Set Headers {"Accept":"${ACCEPT}"} ${scopeValue}= Create Dictionary scopeValue=${VRQAN_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -98,6 +104,7 @@ Get Virtualised Resources Quota Available Notification individual subscription w Set Headers {"Accept":"${ACCEPT}"} ${scopeValue}= Create Dictionary scopeValue=${VRQAN_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -106,6 +113,7 @@ Get Virtualised Resources Quota Available Notification individual subscription w Delete Virtualised Resources Quota Available Notification individual subscription log Try to delete an individual subscription Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -115,6 +123,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_subscribe=${callback_subscribe} @@ -134,6 +143,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Pass Execution If ${NFVO_DUPLICATION} == 0 NVFO is not permitting duplication. Skipping the test Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_subscribe=${callback_subscribe} @@ -153,6 +163,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Pass Execution If ${NFVO_DUPLICATION} == 1 VNFM permits duplication. Skipping the test Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_subscribe=${callback_subscribe} @@ -173,6 +184,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Set Headers {"Content-Type": "${CONTENT_TYPE}"} ${scopeValue}= Create Dictionary scopeValue=${VRQAN_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_subscribe=${callback_subscribe} @@ -193,6 +205,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Set Headers {"Content-Type": "${CONTENT_TYPE}"} ${scopeValue}= Create Dictionary scopeValue=${VRQAN_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_subscribe=${callback_subscribe} @@ -210,6 +223,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub GET Virtualised Resources Quota Available Notification Subscriptions Log Get the list of active subscriptions Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions @@ -219,6 +233,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions GET Virtualised Resources Quota Available Notification Subscriptions with nextpage_opaque_marker parameter Log Get next page of subscriptions Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query using the URI provided in the previous GET request and validate response Get ${nextPageUri} @@ -228,6 +243,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions with nextpa GET Virtualised Resources Quota Available Notification Subscriptions with Filter Log Get the list of active subscriptions Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} @@ -237,6 +253,7 @@ GET Virtualised Resources Quota Available Notification Subscriptions with Filter Get Virtualised Resources Quota Available Notification subscriptions with Bad Request Invalid attribute-based filtering parameters Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response @@ -246,6 +263,7 @@ Send Put request for Virtualised Resources Quota Available Notification subscrip log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response @@ -255,6 +273,7 @@ Send Patch request for Virtualised Resources Quota Available Notification subscr log Trying to perform a Patch. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response @@ -264,6 +283,7 @@ Send Delete request for Virtualised Resources Quota Available Notification subsc log Trying to perform a Delete. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt index 738742a7..7e919389 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/environment/variables.txt @@ -34,6 +34,7 @@ ${notification_response} [] ${apiRoot} / ${apiName} vrqan ${apiMajorVersion} v1 +${API_VERSION} 1.12.0 ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -- GitLab From d67edaf00342c1b54c7d8d9b53bb30416825b044 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 14:28:52 +0500 Subject: [PATCH 079/141] test different methods of notification endpoint of VNF Life Cycle Operation Granting as per SOL 003 specification version 5.1.1 --- .../NotificationEndpoint.robot | 46 ++++++++++++++++++- .../VRQANOperationKeywords.robot | 35 +++++++++++++- 2 files changed, 79 insertions(+), 2 deletions(-) diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot index cbf42d67..08ef3608 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot @@ -1,6 +1,7 @@ *** Settings *** Library String Resource environment/variables.txt +Resource VRQANOperationKeywords.robot Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ @@ -19,7 +20,50 @@ Vr Quota Availibility Notification ... Post-Conditions: none Post Vr Quota Avail Notification Check HTTP Response Status Code Is 204 - +Test the Notification Endpoint - Successful + [Documentation] Test ID: 7.3.7.4.2 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.7.4.3 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.7.4.4 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 11.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.7.4.5 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 11.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 *** Keywords *** Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot index c47a4653..94778f48 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot @@ -303,4 +303,37 @@ Check HTTP Response Header Contain Link JWT Encode [Arguments] ${payload} ${key} ${algorithm} ${encoded}= Evaluate jwt.encode(${payload}, ${key}, ${algorithm}) - [Return] ${encoded} \ No newline at end of file + [Return] ${encoded} +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PUT notification endpoint + Log Trying to perform a PUT. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PATCH notification endpoint + Log Trying to perform a PATCH. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + Log Trying to perform a DELETE. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file -- GitLab From 167920abcf6229c6e4435cd5fb906944d4a7bf01 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 14:31:59 +0500 Subject: [PATCH 080/141] Editorial Change: Move Keywords from NotificationEnpoint to VRQANOperationKeywords --- .../NotificationEndpoint.robot | 29 +------------------ .../VRQANOperationKeywords.robot | 22 +++++++++++++- 2 files changed, 22 insertions(+), 29 deletions(-) diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot index 08ef3608..e737d94f 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/NotificationEndpoint.robot @@ -63,31 +63,4 @@ DELETE Notification endpoint - Method Not Implemented ... Applicability: none ... Post-Conditions: none DELETE notification endpoint - Check HTTP Response Status Code Is 405 -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Set Headers {"Version": "${API_VERSION}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body VrQuotaAvailSubscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post Vr Quota Avail Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Set Headers {"Version": "${API_VERSION}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${template} = Get File jsons/VrQuotaAvailNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot index 94778f48..3fabe7f9 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot @@ -336,4 +336,24 @@ DELETE notification endpoint Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${callbackResp} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Set Global Variable ${response} ${outputResponse} +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body VrQuotaAvailSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri +Post Vr Quota Avail Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/VrQuotaAvailNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file -- GitLab From e18d07af19d2398fd6390679fff9b80b7970e984 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 6 Dec 2024 15:54:45 +0500 Subject: [PATCH 081/141] Update SOL003 document version in all testcases of VNFLifecycleManagement API --- .../CancelOperationTask.robot | 18 ++++---- .../CancelOperationWorkflow.robot | 4 +- .../ChangeCurrentVNFPackageTask.robot | 16 +++---- .../ChangeExternalVNFConnectivityTask.robot | 14 +++--- ...hangeExternalVNFConnectivityWorkflow.robot | 2 +- .../ChangeVNFFlavourTask.robot | 18 ++++---- .../ChangeVNFFlavourWorkflow.robot | 2 +- .../CreateVNFSnapshotTask.robot | 20 ++++----- .../CreateVNFWorkflow.robot | 2 +- .../DeleteVNFWorkflow.robot | 2 +- .../FailOperationTask.robot | 18 ++++---- .../FailOperationWorkflow.robot | 2 +- .../HealVNFTask.robot | 18 ++++---- .../HealVNFWorkflow.robot | 2 +- .../IndividualSubscription.robot | 16 +++---- .../IndividualVNFInstance.robot | 22 +++++----- .../IndividualVNFSnapshot.robot | 22 +++++----- .../IndividualVnfLcmOperationOccurence.robot | 16 +++---- .../InstantiateVNFTask.robot | 16 +++---- .../InstantiateVNFTaskWorkflow.robot | 6 +-- .../ModifyVNFInformationWorkflow.robot | 2 +- .../NotificationEndpoint.robot | 6 +-- .../Notifications.robot | 8 ++-- .../OperateVNFTask.robot | 18 ++++---- .../OperateVNFWorkflow.robot | 2 +- .../RetryOperationTask.robot | 18 ++++---- .../RetryOperationWorkflow.robot | 4 +- .../RevertToVNFSnapshotTask.robot | 18 ++++---- .../RollBackOperationWorkflow.robot | 4 +- .../RollbackOperationTask.robot | 18 ++++---- .../ScaleVNFTask.robot | 18 ++++---- .../ScaleVNFToLevelTask.robot | 20 ++++----- .../ScaleVNFToLevelWorkflow.robot | 2 +- .../ScaleVNFWorkflow.robot | 2 +- .../Subscriptions.robot | 28 ++++++------ .../TerminateVNFTask.robot | 16 +++---- .../TerminateVNFWorkflow.robot | 2 +- .../VNFInstances.robot | 44 +++++++++---------- .../VNFSelectDeployableModules.robot | 14 +++--- .../VNFSnapshots.robot | 34 +++++++------- .../VNFStateSnapshot.robot | 22 +++++----- .../VnfLcmOperationOccurences.robot | 34 +++++++------- 42 files changed, 285 insertions(+), 285 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot index 17df4fcd..584fa08a 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -12,7 +12,7 @@ POST Cancel operation task ... Test title: POST Cancel operation task ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. ... Pre-conditions: The "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance status equal to FAILED_TEMP @@ -25,7 +25,7 @@ POST Cancel operation task Conflict ... Test title: POST Cancel operation task Conflict ... Test objective: The POST method is NOT cancelling an ongoing VNF lifecycle operation due to the fact that the VNF instance resource is not in STARTING, PROCESSING or ROLLING_BACK state ... Pre-conditions: The "VNF LCM operation occurrence" is not in STARTING, PROCESSING or ROLLING_BACK state - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ POST Cancel operation task Not Found ... Test title: POST Cancel operation task Not Found ... Test objective: The objective is to test that POST method cannot cancel a VNF lifecycle operation because the resource is not found ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET Cancel operation task - Method not implemented ... Test title: GET Cancel operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT Cancel operation task - Method not implemented ... Test title: PUT Cancel operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH Cancel operation task - Method not implemented ... Test title: PATCH Cancel operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE Cancel operation task - Method not implemented ... Test title: DELETE Cancel operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ POST Cancel operation task with permitted authorization scope ... Test title: POST Cancel operation task with permitted authorization scope ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. ... Pre-conditions: The "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state with permitted authorization scope. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance status equal to FAILED_TEMP @@ -112,7 +112,7 @@ POST Cancel operation task with not permitted authorization scope ... Test title: POST Cancel operation task with not permitted authorization scope ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. ... Pre-conditions: The "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state with not permitted authorization scope. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance status equal to FAILED_TEMP diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot index 393779ec..99f8312c 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot @@ -18,7 +18,7 @@ Cancel a VNF LCM Operation - STARTING ... Test title: Cancel a VNF LCM Operation - STARTING ... Test objective: The objective is to test the workflow for Cancelling a VNF LCM Operation being in the STARTING state ... Pre-conditions: The VNF lifecycle management operation occurrence is in STARTING state. NFVO is subscribed to VNF LCM Operation Occurrence notifications (Test ID 5.4.20.1) - ... Reference: Clause 5.4.17 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.17 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in ROLLED_BACK state @@ -34,7 +34,7 @@ Cancel a VNF LCM Operation - PROCESSING - ROLLING_BACK ... Test title: Cancel a VNF LCM Operation - PROCESSING - ROLLING_BACK ... Test objective: The objective is to test the workflow for Cancelling a VNF LCM Operation being either in the PROCESSIONG or ROLLING_BACK state ... Pre-conditions: The VNF lifecycle management operation occurrence is in PROCESSING or ROLLING_BACK state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot index 7b05fd10..7a8cd46f 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot @@ -13,7 +13,7 @@ POST Change current VNF Package Task ... Test title: POST Change current VNF Package Task ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Change current VNF Package Task - Conflict ... Test title: POST Change current VNF Package Task - Conflict ... Test objective: The objective is to test that the POST method cannot change the current VNF package task when another lifecycle management operation is ongoing. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: There is another lifecycle management operation ongoing. ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Change current VNF Package Task - Method not implemented ... Test title: GET Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11a.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Change current VNF Package Task - Method not implemented ... Test title: PUT Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11a.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Change current VNF Package Task - Method not implemented ... Test title: PATCH Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11a.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Change current VNF Package Task - Method not implemented ... Test title: DELETE Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11a.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ POST Change current VNF Package Task with permitted authorization scope ... Test title: POST Change current VNF Package Task with permitted authorization scope ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -100,7 +100,7 @@ POST Change current VNF Package Task with not permitted authorization scope ... Test title: POST Change current VNF Package Task with not permitted authorization scope ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based with not permitted authorization scope with not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index f9fd3ebb..270d4729 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -12,7 +12,7 @@ POST Change external VNF connectivity ... Test title: POST Change external VNF connectivity ... Test objective: The objective is to test that POST method trigger a change in VNF external connectivity ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ GET Change external VNF connectivity - Method not implemented ... Test title: GET Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT Change external VNF connectivity - Method not implemented ... Test title: PUT Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH Change external VNF connectivity - Method not implemented ... Test title: PATCH Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE Change external VNF connectivity - Method not implemented ... Test title: DELETE Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST Change external VNF connectivity with permitted authorization scope ... Test title: POST Change external VNF connectivity with permitted authorization scope ... Test objective: The objective is to test that POST method trigger a change in VNF external connectivity with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -88,7 +88,7 @@ POST Change external VNF connectivity with not permitted authorization scope ... Test title: POST Change external VNF connectivity with not permitted authorization scope ... Test objective: The objective is to test that POST method trigger a change in VNF external connectivity with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot index 29b1c2b5..fa516317 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot @@ -17,7 +17,7 @@ Change external connectivity of VNF Workflow ... Test title: Change external connectivity of VNF Workflow ... Test objective: The objective is to change the external connectivity of a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.4.11 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.11 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. The VNFD supports the external connectivity change ... Post-Conditions: VNF instance still in INSTANTIATED state and external connectivity of the VNF is changed diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 11b94187..42dc9cd7 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -12,7 +12,7 @@ POST Change deployment flavour of a vnfInstance ... Test title: POST Change deployment flavour of a vnfInstance ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because of a conflict with the state of the VNF instance resource. (VNF instance resource is not in NOT-INSTANTIATED state) ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Change deployment flavour of a vnfInstance Not Found ... Test title: POST Change deployment flavour of a vnfInstance Not Found ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because the VNF instance resource is not found. ... Pre-conditions: the VNF instance resource is not existing - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Change deployment flavour VNFInstance - Method not implemented ... Test title: GET Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Change deployment flavour VNFInstance - Method not implemented ... Test title: PUT Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Change deployment flavour VNFInstance - Method not implemented ... Test title: PATCH Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Change deployment flavour VNFInstance - Method not implemented ... Test title: DELETE Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Change deployment flavour of a vnfInstance with permitted authorization sco ... Test title: POST Change deployment flavour of a vnfInstance with permitted authorization scope ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour with permitted authorization scope ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -114,7 +114,7 @@ POST Change deployment flavour of a vnfInstance with not permitted authorization ... Test title: POST Change deployment flavour of a vnfInstance with not permitted authorization scope ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour with not permitted authorization scope ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot index ec093fd6..60983b85 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot @@ -17,7 +17,7 @@ Change VNF Flavour Workflow ... Test title: Change VNF Flavour Workflow ... Test objective: The objective is to test the workflow for a change flavour of an existing VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state . NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.7 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.7 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: Multiple flavours are supported for the VNF (as capability in the VNFD). NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance still in INSTANTIATED state and the flavour is changed diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot index f1e87e46..cdaa6cef 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot @@ -13,7 +13,7 @@ POST Create VNF Snapshot Task ... Test title: POST Create VNF Snapshot Task ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Create VNF Snapshot Task - NOT FOUND ... Test title: POST Create VNF Snapshot Task - NOT FOUND ... Test objective: The objective is to test that the POST method cannot request for a snapshot if the task is not supported for the VNF instance represented by the parent resource. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: Task is not supported for the VNF instance represented by the parent resource. ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Create VNF Snapshot Task - CONFLICT ... Test title: POST Create VNF Snapshot Task - CONFLICT ... Test objective: The objective is to test that the POST method cannot request for a snapshot when the VNF instance is in NOT_INSTANTIATED state. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: VNF instance is in NOT_INSTANTIATED state. ... Post-Conditions: none @@ -52,7 +52,7 @@ POST Create VNF Snapshot Task - Unprocessable Content ... Test title: POST Create VNF Snapshot Task - Unprocessable Content ... Test objective: The objective is to test that the POST method cannot request for a snapshot when the provided identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid. ... Post-Conditions: none @@ -65,7 +65,7 @@ GET Create VNF Snapshot Task - Method not implemented ... Test title: GET Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.21.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PUT Create VNF Snapshot Task - Method not implemented ... Test title: PUT Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.21.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ PATCH Create VNF Snapshot Task - Method not implemented ... Test title: PATCH Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.21.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ DELETE Create VNF Snapshot Task - Method not implemented ... Test title: DELETE Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.21.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ POST Create VNF Snapshot Task with permitted authorization scope ... Test title: POST Create VNF Snapshot Task with permitted authorization scope ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -126,7 +126,7 @@ POST Create VNF Snapshot Task with not permitted authorization scope ... Test title: POST Create VNF Snapshot Task with not permitted authorization scope ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance with not permitted authorization scope with not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot index 33167b5d..896a4c0a 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot @@ -17,7 +17,7 @@ Create VNF Instance Resource ... Test title: Create VNF Instance workflow ... Test objective: The objective is to test the workflow for the creation of a new VNF instance resource. ... Pre-conditions: NFVO is subscribed to VNF Identifier Creation notifications - ... Reference: Clause 5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF instance resource has been created in "NOT_INSTANTIATED" state. diff --git a/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot index c75a6ee3..5527eeaf 100644 --- a/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot @@ -17,7 +17,7 @@ Delete VNF Instance Resource ... Test title: Delete VNF Instance workflow ... Test objective: The objective is to test the workflow for the deleteion of an existing VNF instance resource ... Pre-conditions: The VNF Instance resource is in NOT_INSTANTIATED state. NFVO is subscribed to VNF Identifier Creation notifications - ... Reference: Clause 5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF instance resource is deleted on the VNFM. diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot index dfb02cfb..79991b63 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot @@ -12,7 +12,7 @@ POST Fail operation task ... Test title: POST Fail operation task ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF resource state is FINALLY_FAILED @@ -26,7 +26,7 @@ Post Fail operation task Conflict (Not-FAILED_TEMP) ... Test title: Post Fail operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Post Fail operation task Not Found ... Test title: Post Fail operation task Not Found ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation because the operation is not supported ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Fail operation task - Method not implemented ... Test title: GET Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -64,7 +64,7 @@ PUT Fail operation task - Method not implemented ... Test title: PUT Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -76,7 +76,7 @@ PATCH Fail operation task - Method not implemented ... Test title: PATCH Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -88,7 +88,7 @@ DELETE Fail operation task - Method not implemented ... Test title: DELETE Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -100,7 +100,7 @@ POST Fail operation task with permitted authorization scope ... Test title: POST Fail operation task with permitted authorization scope ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation with permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF resource state is FINALLY_FAILED @@ -114,7 +114,7 @@ POST Fail operation task with not permitted authorization scope ... Test title: POST Fail operation task with not permitted authorization scope ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation with not permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF resource state is FINALLY_FAILED diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot index ce239c6e..1f0e75a8 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot @@ -17,7 +17,7 @@ Fail a VNF LCM Operation Workflow ... Test title: Fail a VNF LCM Operation Workflow ... Test objective: The objective is to test the workflow for a Fail VNF LCM Operation ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.16 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.16 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED state diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index 324ee24f..1e0a4fac 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -12,7 +12,7 @@ POST Heal a vnfInstance ... Test title: POST Heal a vnfInstance ... Test objective: The objective is to test that POST method heal a VNF instance ... Pre-conditions: the VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Heal a vnfInstance Not Found ... Test title: POST Heal a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed because the VNF instance resource is not found. ... Pre-conditions: the VNF instance resource is not existing - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Heal VNFInstance - Method not implemented ... Test title: GET Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Heal VNFInstance - Method not implemented ... Test title: PUT Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Heal VNFInstance - Method not implemented ... Test title: PATCH Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Heal VNFInstance - Method not implemented ... Test title: DELETE Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Heal a vnfInstance with permitted authorization scope ... Test title: POST Heal a vnfInstance with permitted authorization scope ... Test objective: The objective is to test that POST method heal a VNF instance with permitted authorization scope ... Pre-conditions: the VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -114,7 +114,7 @@ POST Heal a vnfInstance with not permitted authorization scope ... Test title: POST Heal a vnfInstance with not permitted authorization scope ... Test objective: The objective is to test that POST method heal a VNF instance with not permitted authorization scope ... Pre-conditions: the VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot index 2f6fa856..9312657a 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot @@ -17,7 +17,7 @@ Heal a VNF Instance ... Test title: Heal a VNF Instance ... Test objective: The objective is to heal a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.4.9 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.9 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Heal a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot index a18e72e4..d16a403d 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the Get individual subscription ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription deleted from VNFM @@ -72,7 +72,7 @@ GET Individual Subscription - Not Found ... Test title: GET Individual Subscription - Not Found ... Test objective: The objective is to test the retrieval of individual subscription fails when subscription is not present ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ GET Individual Subscription with permitted authorization scope ... Test title: GET Individual Subscription with permitted authorization scope ... Test objective: The objective is to test the Get individual subscription with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ GET Individual Subscription with not permitted authorization scope ... Test title: GET Individual Subscription with not permitted authorization scope ... Test objective: The objective is to test the Get individual subscription with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index c63baa78..f2e70d53 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -16,7 +16,7 @@ Post Individual VNFInstance - Method not implemented ... Test title: Post Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ Get Information about an individual VNF Instance ... Test title: Get Information about an individual VNF Instance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ PUT Individual VNFInstance - Method not implemented ... Test title: PUT Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ PATCH Individual VNFInstance ... Test title: PATCH Individual VNFInstance ... Test objective: This method modifies an individual VNF instance resource ... Pre-conditions: an existing VNF instance resource - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance modified @@ -68,7 +68,7 @@ PATCH Individual VNFInstance Precondition failed ... Test title: PATCH Individual VNFInstance Precondition failed ... Test objective: The objective is to test that modification of a VNF instance resource fails when a precondition given in an HTTP request header is not fulfilled due to an ETag mismatch ... Pre-conditions: an existing VNF instance resource - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ PATCH Individual VNFInstance Conflict ... Test title: PATCH Individual VNFInstance Conflict ... Test objective: The objective is to test the conflict while modifying a VNF instance resource ... Pre-conditions: another LCM operation is ongoing - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance not modified @@ -94,7 +94,7 @@ DELETE Individual VNFInstance ... Test title: DELETE Individual VNFInstance ... Test objective: The objective is to delete a VNF instance ... Pre-conditions: the VNF instance resource is existing - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance deleted @@ -106,7 +106,7 @@ DELETE Individual VNFInstance Conflict ... Test title: DELETE Individual VNFInstance Conflict ... Test objective: The objective is to verify that the deletion cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resources are not deleted @@ -120,7 +120,7 @@ Get Information about an individual VNF Instance - Not Found ... Test title: Get Information about an individual VNF Instance - Not Found ... Test objective: The objective is to test that the retrieval of an individual VNF Instance fails when instance is not present. ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -133,7 +133,7 @@ Get Information about an individual VNF Instance with permitted authorization sc ... Test title: Get Information about an individual VNF Instance with permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ Get Information about an individual VNF Instance with not permitted authorizatio ... Test title: Get Information about an individual VNF Instance with not permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot index ed828b56..bdd426cc 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -7,7 +7,7 @@ POST Individual VNF Snapshot - Method not implemented ... Test title: POST Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.24.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.24.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Information about an individual VNF Snapshot - SUCCESSFUL ... Test title: GET Information about an individual VNF Snapshot - SUCCESSFUL ... Test objective: The objective is to GET information about an individual VNF Snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -33,7 +33,7 @@ GET Information about an individual VNF Snapshot - NOT FOUND ... Test title: GET Information about an individual VNF Snapshot - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot fails when using an invalid resource identifier. ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -46,7 +46,7 @@ PUT Individual VNF Snapshot - Method not implemented ... Test title: PUT Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.24.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF Snapshot not modified @@ -58,7 +58,7 @@ PATCH Individual VNF Snapshot - Success ... Test title: PATCH Individual VNF Snapshot - Success ... Test objective: The objective is to test that PATCH method successfully modifies an individual VNF Snapshot resource ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF Snapshot modified @@ -72,7 +72,7 @@ PATCH Individual VNF Snapshot - Conflict ... Test title: PATCH Individual VNF Snapshot - Success ... Test objective: The objective is to test that PATCH method cannot modify an individual VNF Snapshot resource due to the fact that another modification is ongoing. ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The Individual VNF Snapshot resource is currently being modified due to an underlying VNF snapshot operation. ... Post-Conditions: none @@ -85,7 +85,7 @@ PATCH Individual VNF Snapshot - Precondition Failed ... Test title: PATCH Individual VNF Snapshot - Precondition Failed ... Test objective: The objective is to that the modification of individual VNF Snapshot fails because precondition given in an HTTP request header is not fulfilled due to an ETag mismatch. ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF snapshot is not modified @@ -98,7 +98,7 @@ DELETE Individual VNF Snapshot ... Test title: DELETE Individual VNF Snapshot ... Test objective: The objective is to delete a VNF Snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF Snapshot deleted @@ -111,7 +111,7 @@ DELETE Individual VNF Snapshot - Conflict ... Test title: DELETE Individual VNF Snapshot Conflict ... Test objective: The objective is to verify that The operation cannot be executed currently, due to a conflict with the state of the VNF Snapshot resource. ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: VNF snapshot is in use by some operation such as reverting a VNF instance to a VNF snapshot or creating a VNF snapshot package. ... Post-Conditions: none @@ -125,7 +125,7 @@ GET Information about an individual VNF Snapshot - SUCCESSFUL with permitted aut ... Test title: GET Information about an individual VNF Snapshot - SUCCESSFUL with permitted authorization scope ... Test objective: The objective is to GET information about an individual VNF Snapshot with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -139,7 +139,7 @@ GET Information about an individual VNF Snapshot with not permitted authorizatio ... Test title: GET Information about an individual VNF Snapshot with not permitted authorization scope ... Test objective: The objective is to GET information about an individual VNF Snapshot with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 04e0d1a8..b9786a22 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -11,7 +11,7 @@ Post Individual VNF LCM Operation occurrences - Method not implemented ... Test title: Post Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ Get Individual VNF LCM Operation occurrences ... Test title: Get Individual VNF LCM Operation occurrences ... Test objective: The objective is to test that this method retrieve information about a VNF lifecycle management operation occurrence ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT Individual VNF LCM Operation occurrences - Method not implemented ... Test title: PUT Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PATCH Individual VNF LCM Operation occurrences - Method not implemented ... Test title: PATCH Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ DELETE Individual VNF LCM Operation occurrences - Method not implemented ... Test title: DELETE Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ Get Individual VNF LCM Operation occurrences - Not Found ... Test title: Get Individual VNF LCM Operation occurrences - Not Found ... Test objective: The objective is to test that the retrieval of VNF lifecycle management operation occurrence fails when instance is not present. ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ Get Individual VNF LCM Operation occurrences with permitted authorization scope ... Test title: Get Individual VNF LCM Operation occurrences with permitted authorization scope ... Test objective: The objective is to test that this method retrieve information about a VNF lifecycle management operation occurrence with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ Get Individual VNF LCM Operation occurrences with not permitted authorization sc ... Test title: Get Individual VNF LCM Operation occurrences with not permitted authorization scope ... Test objective: The objective is to test that this method retrieve information about a VNF lifecycle management operation occurrence with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot index e6d9a28a..6b7594b0 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -13,7 +13,7 @@ Instantiate a vnfInstance ... Test title: Post Instantiate Individual VNFInstance ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state - ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ Instantiate a vnfInstance Conflict ... Test title: Post Instantiate Individual VNFInstance ... Test objective: The objective is to verify that the instantiation of the vnf cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Instantiate VNFInstance - Method not implemented ... Test title: GET Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Instantiate VNFInstance - Method not implemented ... Test title: PUT Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Instantiate VNFInstance - Method not implemented ... Test title: PATCH Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Instantiate VNFInstance - Method not implemented ... Test title: DELETE Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ Instantiate a vnfInstance with permitted authorization scope ... Test title: Post Instantiate Individual VNFInstance with permitted authorization scope ... Test objective: The objective is to instantiate a VNF instance with permitted authorization scope ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state - ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ Instantiate a vnfInstance with not permitted authorization scope ... Test title: Post Instantiate Individual VNFInstance with not permitted authorization scope ... Test objective: The objective is to instantiate a VNF instance with not permitted authorization scope ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state - ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot index 36ff993a..8833951b 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot @@ -20,7 +20,7 @@ VNF Instantiation ... Test title: VNF Instantiation workflow ... Test objective: The objective is to test the workflow for the instantiation of a VNF instance ... Pre-conditions: VNF instance resources is already created. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance in INSTANTIATED state @@ -38,7 +38,7 @@ VNF Instantiation with attribute instantiationLevelId ... Test title: VNF Instantiation workflow with attribute instantiationLevelId ... Test objective: The objective is to test the workflow for the instantiation of a VNF instance ... Pre-conditions: VNF instance resources is already created. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance in INSTANTIATED state @@ -56,7 +56,7 @@ VNF Instantiation with attribute targetScaleLevelInfo ... Test title: VNF Instantiation workflow with attribute targetScaleLevelInfo ... Test objective: The objective is to test the workflow for the instantiation of a VNF instance ... Pre-conditions: VNF instance resources is already created. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance in INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot index 0094b3c2..68362d29 100644 --- a/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot @@ -17,7 +17,7 @@ Modify info of a VNF Instance ... Test title: Update information about a VNF instance ... Test objective: The objective is to update information about a VNF instance. ... Pre-conditions: VNF instance is created - ... Reference: Clause 5.3.6 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.3.6 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Update information of a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance info is updated diff --git a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot index f114036d..7d8b1822 100644 --- a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF LCM Operation Occurrence Notification ... Test title: VNF LCM Operation Occurrence Notification ... Test objective: The objective is to test that the POST request triggers VNF LCM Operation Occurrence Notification. ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test that the POST request triggers VNF Identifier Creation Notification. ... Pre-conditions: A subscription for VNF identifier creation cotification is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test that the POST request triggers VNF Identifier Deletion Notification. ... Pre-conditions: A subscription for VNF identifier deletion notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/Notifications.robot b/SOL003/VNFLifecycleManagement-API/Notifications.robot index f29f871b..cc1f12f8 100644 --- a/SOL003/VNFLifecycleManagement-API/Notifications.robot +++ b/SOL003/VNFLifecycleManagement-API/Notifications.robot @@ -13,7 +13,7 @@ VNF LCM Operation Occurrence Start Notification ... Test title: VNF LCM Operation Occurrence Start Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Start Notification when a new VNF LCM operation is started in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ VNF LCM Operation Occurrence Result Notification ... Test title: VNF LCM Operation Occurrence Result Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Result Notification when a VNF LCM operation is completed in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: An VNF LCM operation is in progress, and a subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Creation Notification when a new VNF instance resource is created in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Deletion Notification when a VNF instance resource is deleted in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance resource is created, and a subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index 2daa755b..567fdd9d 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -14,7 +14,7 @@ POST Operate a vnfInstance ... Test title: POST Operate a vnfInstance ... Test objective: The objective is to test that POST method operate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Operate a vnfInstance Not Found ... Test title: POST Operate a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed currently, because the resource is not existing ... Pre-conditions: the VNF instance resource is in not existing - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Operate VNFInstance - Method not implemented ... Test title: GET Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Operate VNFInstance - Method not implemented ... Test title: PUT Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Operate VNFInstance - Method not implemented ... Test title: PATCH Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Operate VNFInstance - Method not implemented ... Test title: DELETE Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ POST Operate a vnfInstance with permitted authorization scope ... Test title: POST Operate a vnfInstance with permitted authorization scope ... Test objective: The objective is to test that POST method operate a VNF instance with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -114,7 +114,7 @@ POST Operate a vnfInstance with not permitted authorization scope ... Test title: POST Operate a vnfInstance with not permitted authorization scope ... Test objective: The objective is to test that POST method operate a VNF instance with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot index d6eeed1c..0049988e 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot @@ -18,7 +18,7 @@ Operate a VNF Instance ... Test title: Operate a VNF Instance ... Test objective: The objective is to test the workflow of operational change of a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: change the operational state of a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and the operational state is changed diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index f84c03dc..3e55d236 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -15,7 +15,7 @@ Post Retry operation task ... Test title: Post Retry operation task ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Post Retry operation task Conflict (Not-FAILED_TEMP) ... Test title: Post Retry operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that the retry operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. (i.e. the VNF instance resource is not in FAILED_TEMP state) ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ Post Retry operation task Not Found ... Test title: Post Retry operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET Retry operation task - Method not implemented ... Test title: GET Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.14.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ PUT Retry operation task - Method not implemented ... Test title: PUT Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.14.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ PATCH Retry operation task - Method not implemented ... Test title: PATCH Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.14.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ DELETE Retry operation task - Method not implemented ... Test title: DELETE Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.14.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ Post Retry operation task with permitted authorization scope ... Test title: Post Retry operation task with permitted authorization scope ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state with permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ Post Retry operation task with not permitted authorization scope ... Test title: Post Retry operation task with not permitted authorization scope ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state with not permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot index 0c40c970..1311ca85 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot @@ -15,7 +15,7 @@ Retry VNF LCM Operation - Successful ... Test title: Retry VNF LCM Operation - Successful ... Test objective: The objective is to test the workflow for a successful Retry VNF LCM Operation and the status notifications ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in COMPLETED state @@ -30,7 +30,7 @@ Retry VNF LCM Operation - Unsuccessful ... Test title: Retry VNF LCM Operation - Unsuccessful ... Test objective: The objective is to test the workflow for an unsuccesful Retry VNF LCM Operation and the status notifications ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot index 8dce5412..0f913619 100644 --- a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -13,7 +13,7 @@ POST Revert to VNF Snapshot Task ... Test title: POST Revert to VNF Snapshot Task ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Revert to VNF Snapshot Task - NOT FOUND ... Test title: POST Revert to VNF Snapshot Task - NOT FOUND ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot if the task is not supported for the VNF instance represented by the parent resource. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: Task is not supported for the VNF instance represented by the parent resource. ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Revert to VNF Snapshot Task - CONFLICT ... Test title: POST Revert to VNF Snapshot Task - CONFLICT ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot when the VNF instance is in NOT_INSTANTIATED state. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: VNF instance is in NOT_INSTANTIATED state. ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Revert to VNF Snapshot Task - Method not implemented ... Test title: GET Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.22.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Revert to VNF Snapshot Task - Method not implemented ... Test title: PUT Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.22.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Revert to VNF Snapshot Task - Method not implemented ... Test title: PATCH Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.22.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Revert to VNF Snapshot Task - Method not implemented ... Test title: DELETE Revert to sVNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.22.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Revert to VNF Snapshot Task with permitted authorization scope ... Test title: POST Revert to VNF Snapshot Task with permitted authorization scope ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -113,7 +113,7 @@ POST Revert to VNF Snapshot Task with not permitted authorization scope ... Test title: POST Revert to VNF Snapshot Task with not permitted authorization scope ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot index d7c5083d..3a1df1b1 100644 --- a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot @@ -17,7 +17,7 @@ Rollback a VNF LCM Operation - Successful ... Test title: Rollback VNF LCM Operation - Successful ... Test objective: The objective is to test the workflow for a Rolling Back a VNF LCM Operation and the operation is successful ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.11 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.3.11 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in ROLLED_BACK state @@ -32,7 +32,7 @@ Rollback VNF LCM Operation - Unsuccessful ... Test title: Rollback VNF LCM Operation - Unsuccessful ... Test objective: The objective is to test the workflow for a Rollback VNF LCM Operation and the operation is not successful ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index eeb3a29a..ee21c4d0 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -14,7 +14,7 @@ Post Rollback operation task ... Test title: Post Rollback operation task ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method initiates a rollback on a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ POST Rollback operation task Not Found ... Test title: POST Rollback operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Rollback operation task - Method not implemented ... Test title: GET Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ PUT Rollback operation task - Method not implemented ... Test title: PUT Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ PATCH Rollback operation task - Method not implemented ... Test title: PATCH Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ DELETE Rollback operation task - Method not implemented ... Test title: DELETE Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ Post Rollback operation task with permitted authorization scope ... Test title: Post Rollback operation task with permitted authorization scope ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation with permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ Post Rollback operation task with not permitted authorization scope ... Test title: Post Rollback operation task with not permitted authorization scope ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation with not permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index cfb8a1de..6f72873b 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -13,7 +13,7 @@ POST Scale a vnfInstance ... Test title: POST Scale a vnfInstance ... Test objective: The objective is to scale a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the scale operation cannot be executed ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Scale a vnfInstance Not Found ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed currently, because the VNF instance resource is not found. ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Scale VNFInstance - Method not implemented ... Test title: GET Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Scale VNFInstance - Method not implemented ... Test title: PUT Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Scale VNFInstance - Method not implemented ... Test title: PATCH Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Scale VNFInstance - Method not implemented ... Test title: DELETE Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ POST Scale a vnfInstance with permitted authorization scope ... Test title: POST Scale a vnfInstance with permitted authorization scope ... Test objective: The objective is to scale a VNF instance with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ POST Scale a vnfInstance with not permitted authorization scope ... Test title: POST Scale a vnfInstance with not permitted authorization scope ... Test objective: The objective is to scale a VNF instance with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index efced3b5..98b64121 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -12,7 +12,7 @@ POST Scale a vnfInstance to level - with InstantiationLevelId attribute ... Test title: POST Scale a vnfInstance to level ... Test objective: The objective is to scale a VNF instance to a target level. ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the scale operation cannot be executed because the resource is not instantiated ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Scale a vnfInstance Not Found ... Test title: Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed , because the VNF instance resource cannot be found. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Scale to level VNFInstance - Method not implemented ... Test title: GET Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Scale to level VNFInstance - Method not implemented ... Test title: PUT Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Scale to level VNFInstance - Method not implemented ... Test title: PATCH Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Scale to level VNFInstance - Method not implemented ... Test title: DELETE Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Scale a vnfInstance to level - with scaleInfo attribute ... Test title: POST Scale a vnfInstance to level with scaleInfo attribute ... Test objective: The objective is to scale a VNF instance to a target level. ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ POST Scale a vnfInstance to level - with InstantiationLevelId attribute with per ... Test title: POST Scale a vnfInstance to level with permitted authorization scope ... Test objective: The objective is to scale a VNF instance to a target level with permitted authorization scope . ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ POST Scale a vnfInstance to level - with InstantiationLevelId attribute with not ... Test title: POST Scale a vnfInstance to level with not permitted authorization scope ... Test objective: The objective is to scale a VNF instance to a target level with not permitted authorization scope . ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot index 1635281a..ec04d753 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot @@ -15,7 +15,7 @@ VNF Instance Scale To Level ... Test title: VNF Instance Scale To Level workflow ... Test objective: The objective is to test the workflow for the scale to level of a VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state . NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.6 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.6 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Scale operation is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and VNF is scaled to the new level diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot index e18f5b86..bc4b61b8 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot @@ -15,7 +15,7 @@ VNF Instance Scale Out ... Test title: VNF Instance Scale Out workflow ... Test objective: The objective is to test the workflow for the scaling out a VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state (Test ID 5.4.4.1). NFVO is subscribed to VNF LCM Operation Occurrence notifications (Test ID 5.4.20.1) - ... Reference: Clause 5.4.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Scale operation is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and VNF is scaled out diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index c8674a4f..4d0c2c0c 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -15,7 +15,7 @@ POST Create a new subscription ... Test title: POST Create a new subscription ... Test objective: The POST method creates a new subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -28,7 +28,7 @@ Create a new Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The objective is to test request to create a duplicate (same callbackurl and filter) subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: duplication is supported by SUT ... Post-Conditions: in response header Location shall not be null @@ -41,7 +41,7 @@ Create a new Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The objective is to test the request that does not create a duplicate (same callbackurl and filter) subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: duplication is not supported by SUT ... Post-Conditions: in response header Location shall not be null @@ -54,7 +54,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET Subscription - Filter ... Test title: GET Subscriptions - Filter ... Test objective: The objective is Get the list of active subscriptions using a filter ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is Get the list of active subscriptions using an invalid filter ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -138,7 +138,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -150,7 +150,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -162,7 +162,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ GET Subscriptions as a Paged Response ... Test title: GET Subscriptions as a Paged Response ... Test objective: The objective is Get the list of active subscriptions as a Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the subscriptions resources ... Post-Conditions: none @@ -187,7 +187,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of the list of active subscriptions fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -213,7 +213,7 @@ GET Subscriptions as a Paged Response with nextpage_opauque_marker parameter ... Test title: GET Subscriptions as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to Get the list of active subscriptions as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving subscriptions as a paged response has been successfully issued (Test ID 7.3.1.17.14) - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the subscriptions resources ... Post-Conditions: none @@ -225,7 +225,7 @@ POST Create a new subscription with permitted authorization scope ... Test title: POST Create a new subscription with permitted authorization scope ... Test objective: The POST method creates a new subscription with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -238,7 +238,7 @@ POST Create a new subscription with not permitted authorization scope ... Test title: POST Create a new subscription with not permitted authorization scope ... Test objective: The POST method creates a new subscription with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index 5e765aa3..b8ba81b1 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -13,7 +13,7 @@ POST Terminate a vnfInstance ... Test title: POST Terminate a vnfInstance ... Test objective: The objective is to test that POST method terminate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the vnf Instance cannot be terminated ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Terminate VNFInstance - Method not implemented ... Test title: GET Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Terminate VNFInstance - Method not implemented ... Test title: PUT Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Terminate VNFInstance - Method not implemented ... Test title: PATCH Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Terminate VNFInstance - Method not implemented ... Test title: DELETE Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ POST Terminate a vnfInstance with permitted authorization scope ... Test title: POST Terminate a vnfInstance with permitted authorization scope ... Test objective: The objective is to test that POST method terminate a VNF instance with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ POST Terminate a vnfInstance with not permitted authorization scope ... Test title: POST Terminate a vnfInstance with not permitted authorization scope ... Test objective: The objective is to test that POST method terminate a VNF instance with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot index 7e71c073..3aaed930 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot @@ -15,7 +15,7 @@ Terminate a VNF Instance ... Test title: Terminate a VNF Instance ... Test objective: The objective is to terminate a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. ... Post-Conditions: VNF instance in NOT_INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index dbe01ed9..881aac88 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -13,7 +13,7 @@ POST Create a new vnfInstance ... Test title: POST Create a new vnfInstance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance created @@ -26,7 +26,7 @@ GET information about multiple VNF instances ... Test title: GET information about multiple VNF instances ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,8 +38,8 @@ GET information about multiple VNF instances Bad Request Invalid attribute-based [Documentation] Test ID: 7.3.1.1.3 ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to query information about multiple VNF instances with Invalid attribute-based filtering parameters - ... Pre-conditions: A VNF is instantiated, a bad filter selector (filter selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.5.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Pre-conditions: A VNF is instantiated, a bad filter selector (filter selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v5.1.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,8 +52,8 @@ GET information about multiple VNF instances Bad Request Invalid attribute selec [Documentation] Test ID: 7.3.1.1.4 ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute selector ... Test objective: The objective is to query information about multiple VNF instances with Invalid attribute selector - ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.5.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v5.1.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ GET information about multiple VNF instances with "all_fields" attribute selecto ... Test title: GET information about multiple VNF instances with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ GET information about multiple VNF instances with "exclude_default" attribute se ... Test title: GET information about multiple VNF instances with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ GET information about multiple VNF instances with "fields" attribute selector ... Test title: GET information about multiple VNF instances with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ GET information about multiple VNF instances with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF instances with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ PUT multiples VNFInstances - Method not implemented ... Test title: PUT multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ PATCH multiples VNFInstances - Method not implemented ... Test title: PATCH multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ DELETE VNFInstances - Method not implemented ... Test title: DELETE multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -154,7 +154,7 @@ GET information about multiple VNF instances to get Paged Response ... Test title: GET information about multiple VNF instances to get Paged Response ... Test objective: The objective is to query information about multiple VNF instances to get Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the subscriptions resources ... Post-Conditions: none @@ -167,7 +167,7 @@ GET information about multiple VNF instances as a Paged Response with nextpage_o ... Test title: GET information about multiple VNF instances as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about multiple VNF instances as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving multiple VNF instances as a paged response has been successfully issued (Test ID 7.3.1.1.12) - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF instance resources ... Post-Conditions: none @@ -178,8 +178,8 @@ GET information about multiple VNF instances - Bad Request Response too Big [Documentation] Test ID: 7.3.1.1.13 ... Test title: GET information about multiple VNF instances - Bad Request Response too Big ... Test objective: The objective is to query information about multiple VNF instances fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. - ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.5.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v5.1.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -192,7 +192,7 @@ GET information about multiple VNF instances with "exclude_default" and "fields" ... Test title: GET information about multiple VNF instances with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -205,7 +205,7 @@ POST Create a new vnfInstance - Unprocessable Content ... Test title: POST Create a new vnfInstance - Unprocessable Content ... Test objective: The objective is to test that correct error code is returned when VNF package referenced by the "vnfdId" attribute in the "CreateVnfRequest" structure is not in the "ENABLED" state or does not exist. ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNF package referenced by the "vnfdId" attribute in the "CreateVnfRequest" structure is not in the "ENABLED" state or does not exist. ... Post-Conditions: none @@ -218,7 +218,7 @@ GET information about multiple VNF instances using Filter ... Test title: GET information about multiple VNF instances using Filter ... Test objective: The objective is to query information about multiple VNF instances using filter ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -231,7 +231,7 @@ POST Create a new vnfInstance with permitted authorization scope ... Test title: POST Create a new vnfInstance with permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance created @@ -244,7 +244,7 @@ POST Create a new vnfInstance with not permitted authorization scope ... Test title: POST Create a new vnfInstance with not permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance created diff --git a/SOL003/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot b/SOL003/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot index 37c1dce8..82195bc2 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot @@ -14,7 +14,7 @@ POST Select VNF Deployable Module ... Test title: POST Select VNF Deployable Module ... Test objective: The objective is to select VNF Deployable Module ... Pre-conditions: The VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.26.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.26.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ POST Select VNF Deployable Module Not Found ... Test title: POST Select VNF Deployable Module Not Found ... Test objective: The objective is to test that the POST Select VNF Deployable Module fails when the resource is not present. ... Pre-conditions: none - ... Reference: Clause 5.4.26.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.26.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ POST Select VNF Deployable Module with conflict (Not Instantiated) ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation fails when there is a conflict with the resource state. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.26.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.26.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Select VNF Deployable Module - Method not implemented ... Test title: GET Select VNF Deployable Module - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.26.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.26.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ PUT Select VNF Deployable Module - Method not implemented ... Test title: PUT Select VNF Deployable Module - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.26.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.26.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ PATCH Select VNF Deployable Module - Method Not implemented ... Test title: PATCH Select VNF Deployable Module - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.26.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.26.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ DELETE Select VNF Deployable Module - Method Not implemented ... Test title: DELETE Select VNF Deployable Module - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.26.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.26.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot index 6317e454..badbb379 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -7,7 +7,7 @@ POST Create a new VNF Snapshot ... Test title: POST Create a new VNF Snapshot ... Test objective: The objective is to create a new VNF snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF snapshot is created @@ -21,7 +21,7 @@ GET information about multiple VNF Snapshots ... Test title: GET information about multiple VNF Snapshots ... Test objective: The objective is to get information about multiples VNF snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -34,7 +34,7 @@ GET information about multiple VNF Snapshots Bad Request Invalid attribute-based ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -47,7 +47,7 @@ GET information about multiple VNF Snapshots Bad Request Invalid attribute selec ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ GET information about multiple VNF Snapshots with "all_fields" attribute selecto ... Test title: GET information about multiple VNF Snapshots with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ GET information about multiple VNF Snapshots with "exclude_default" attribute se ... Test title: GET information about multiple VNF Snapshots with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET information about multiple VNF Snapshots with "fields" attribute selector ... Test title: GET information about multiple VNF Snapshots with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ GET information about multiple VNF Snapshots with "exclude_default" and "fields" ... Test title: GET information about multiple VNF Snapshots with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ GET information about multiple VNF Snapshots with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF Snapshots with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -125,7 +125,7 @@ GET VNF Snapshots - Bad Request Response too Big ... Test title: GET VNF Snapshots - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing VNF Snapshots list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM does not support paged response. ... Post-Conditions: none @@ -138,7 +138,7 @@ GET VNF Snapshots as Paged Response ... Test title: GET VNF Snapshots as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshots as paged response. ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM supports paged response. ... Post-Conditions: none @@ -151,7 +151,7 @@ PUT VNF Snapshots - Method not implemented ... Test title: PUT VNF Snapshots - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -163,7 +163,7 @@ PATCH VNF Snapshots - Method not implemented ... Test title: PATCH VNF Snapshots - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -175,7 +175,7 @@ DELETE VNF Snapshots - Method not implemented ... Test title: DELETE VNF Snapshots - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance not deleted @@ -187,7 +187,7 @@ GET information about multiple VNF Snapshots using Filter ... Test title: GET information about multiple VNF Snapshots using Filter ... Test objective: The objective is to get information about multiples VNF snapshots using filter ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -200,7 +200,7 @@ POST Create a new VNF Snapshot with permitted authorization scope ... Test title: POST Create a new VNF Snapshot with permitted authorization scope ... Test objective: The objective is to create a new VNF snapshot with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF snapshot is created @@ -214,7 +214,7 @@ POST Create a new VNF Snapshot with not permitted authorization scope ... Test title: POST Create a new VNF Snapshot with not permitted authorization scope ... Test objective: The objective is to create a new VNF snapshot with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF snapshot is created diff --git a/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot b/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot index a81f3f67..7c48bf17 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot @@ -7,7 +7,7 @@ POST VNF State Snapshot - Method not implemented ... Test title: POST VNF State Snapshot - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.25.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET VNF State Snapshot - Complete File ... Test title: GET Information about an individual VNF State Snapshot - Complete File ... Test objective: The objective is to fetch the whole content of a VNF State Snapshot using GET method. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET VNF State Snapshot - Partial Content ... Test title: GET VNF State Snapshot - Partial Content ... Test objective: The objective is to fetch partial content of a VNF State Snapshot by sending a range request using GET method. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM supports range requests ... Post-Conditions: none @@ -46,7 +46,7 @@ GET VNF State Snapshot - Range Request Not Supported ... Test title: GET VNF State Snapshot - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF State Snapshot is delivered even with a range request when VNFM does not support range requests. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM does not support range requests ... Post-Conditions: none @@ -60,7 +60,7 @@ GET VNF State Snapshot - Range Not Satisfiable ... Test title: GET VNF State Snapshot - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF State Snapshot package file. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM supports range requests ... Post-Conditions: none @@ -72,7 +72,7 @@ GET VNF State Snapshot - Conflict ... Test title: GET VNF State Snapshot - Conflict ... Test objective: The objective is to test that an error is returned when there is a conflict with the state of the VNF snapshot resource. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: Typically, this is due to the fact that the VNF snapshot creation process is not completed. ... Post-Conditions: none @@ -84,7 +84,7 @@ PUT VNF State Snapshot - Method not implemented ... Test title: PUT VNF State Snapshot - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.25.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF State Snapshot Package not modified @@ -96,7 +96,7 @@ PATCH VNF State Snapshot - Method Not implemented ... Test title: PATCH VNF State Snapshot ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.25.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -108,7 +108,7 @@ DELETE VNF State Snapshot - Method Not implemented ... Test title: DELETE VNF State Snapshot - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.25.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -120,7 +120,7 @@ GET VNF State Snapshot - Complete File with permitted authorization scope ... Test title: GET Information about an individual VNF State Snapshot - Complete File with permitted authorization scope ... Test objective: The objective is to fetch the whole content of a VNF State Snapshot using GET method with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -133,7 +133,7 @@ GET VNF State Snapshot - Complete File with not permitted authorization scope ... Test title: GET Information about an individual VNF State Snapshot - Complete File with not permitted authorization scope ... Test objective: The objective is to fetch the whole content of a VNF State Snapshot using GET method with not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index 4c543a02..fdb3e53d 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -11,7 +11,7 @@ POST VNF LCM Operation occurrences - Method not implemented ... Test title: POST VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET status information about multiple VNF LCM Operation OCC ... Test title: GET status information about multiple VNF LCM Operation OCC ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ GET status information about multiple VNF LCM Operation OCC Bad Request Invalid ... Test title: GET status information about multiple VNF LCM Operation OCC Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ GET status information about multiple VNF LCM Operation OCC Bad Request Invalid ... Test title: GET status information about multiple VNF LCM Operation OCC Bad Request Invalid attribute selector ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test title: GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ GET status information about multiple VNF LCM Operation OCC with "exlude_default ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ GET status information about multiple VNF LCM Operation OCC with "fields" ... Test title: GET status information about multiple VNF LCM Operation OCC with "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ GET status information about multiple VNF LCM Operation OCC with "exclude_fields ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -114,7 +114,7 @@ PUT status information about multiple VNF LCM Operation OCC - Method not impleme ... Test title: PUT status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ PATCH status information about multiple VNF LCM Operation OCC - Method not imple ... Test title: PATCH status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -138,7 +138,7 @@ DELETE status information about multiple VNF LCM Operation OCC - Method not impl ... Test title: DELETE status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -150,7 +150,7 @@ GET status information about multiple VNF LCM Operation OCC to get Paged Respons ... Test title: GET status information about multiple VNF LCM Operation OCC to get Paged Response ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences to get a Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF lifecycle management operation occurrences resources ... Post-Conditions: none @@ -163,7 +163,7 @@ GET information about multiple VNF LCM Operation OCC as a Paged Response with ne ... Test title: GET information about multiple VNF LCM Operation OCC as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about multiple VNF lifecycle management operation occurrences as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving multiple VNF lifecycle management operation occurrences as a paged response has been successfully issued (Test ID 7.3.1.11.12) - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF lifecycle management operation occurrences resources ... Post-Conditions: none @@ -175,7 +175,7 @@ GET status information about multiple VNF LCM Operation OCC - Bad Request Respon ... Test title: GET status information about multiple VNF LCM Operation OCC - Bad Request Response too Big ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -188,7 +188,7 @@ GET status information about multiple VNF LCM Operation OCC with "exclude_defaul ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" and "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -201,7 +201,7 @@ GET status information about multiple VNF LCM Operation OCC with permitted autho ... Test title: GET status information about multiple VNF LCM Operation OCC with permitted authorization scope ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -214,7 +214,7 @@ GET status information about multiple VNF LCM Operation OCC with not permitted a ... Test title: GET status information about multiple VNF LCM Operation OCC with not permitted authorization scope ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences with not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 2f11580288c68520d199ff004ea5de8dfc2c94fe Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 10 Dec 2024 14:48:43 +0500 Subject: [PATCH 082/141] editorial changes: Reformatted the json schemas --- .../schemas/ApiVersionInformation.schema.json | 64 +- .../schemas/LccnSubscription.schema.json | 48 +- .../schemas/LccnSubscriptions.schema.json | 48 +- .../schemas/Subscription.schema.json | 50 +- ...IdentifierCreationNotification.schema.json | 21 +- .../schemas/VnfLcmOpOcc.schema.json | 232 +- .../schemas/VnfLcmOpOccs.schema.json | 227 +- ...perationOccurrenceNotification.schema.json | 227 +- .../schemas/VnfSnapshotInfo.schema.json | 492 +- .../VnfSnapshotInfoModifications.schema.json | 4908 ++++++++--------- .../schemas/VnfSnapshotsInfo.schema.json | 464 +- .../schemas/subscriptions.schema.json | 50 +- ...IdentifierDeletionNotification.schema.json | 21 +- .../schemas/vnfInstances.schema.json | 2 +- 14 files changed, 3941 insertions(+), 2913 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/ApiVersionInformation.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/ApiVersionInformation.schema.json index a7964119..b3582ea4 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/ApiVersionInformation.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/ApiVersionInformation.schema.json @@ -1,36 +1,36 @@ { - "description": "This type represents API version information.\n", - "type": "object", - "required": [ - "uriPrefix", - "apiVersions" - ], - "properties": { - "uriPrefix": { - "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", - "type": "string" - }, - "apiVersions": { - "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "version" - ], - "properties": { - "version": { - "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", - "type": "string" - }, - "isDeprecated": { - "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", - "type": "boolean" - }, - "retirementDate": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" + "description": "This type represents API version information.\n", + "type": "object", + "required": [ + "uriPrefix", + "apiVersions" + ], + "properties": { + "uriPrefix": { + "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", + "type": "string" + }, + "apiVersions": { + "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", + "type": "string" + }, + "isDeprecated": { + "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", + "type": "boolean" + }, + "retirementDate": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" } } } diff --git a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json index 59cf21d9..7a580655 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json @@ -1,7 +1,12 @@ { "description": "This type represents a subscription related to notifications about VNF lifecycle changes.\n", "type": "object", - "required": ["id", "callbackUri", "verbosity", "_links"], + "required": [ + "id", + "callbackUri", + "verbosity", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -18,20 +23,28 @@ { "oneOf": [ { - "required": ["vnfdId"] + "required": [ + "vnfdId" + ] }, { - "required": ["vnfProductsFromProviders"] + "required": [ + "vnfProductsFromProviders" + ] } ] }, { "oneOf": [ { - "required": ["vnfInstanceIds"] + "required": [ + "vnfInstanceIds" + ] }, { - "required": ["vnfInstanceNames"] + "required": [ + "vnfInstanceNames" + ] } ] } @@ -50,7 +63,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProvider"], + "required": [ + "vnfProvider" + ], "properties": { "vnfProvider": { "description": "Name of the VNF provider to match.\n", @@ -61,7 +76,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProductName"], + "required": [ + "vnfProductName" + ], "properties": { "vnfProductName": { "description": "Name of the VNF product to match.\n", @@ -72,7 +89,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfSoftwareVersion"], + "required": [ + "vnfSoftwareVersion" + ], "properties": { "vnfSoftwareVersion": { "description": "A version.\n", @@ -172,17 +191,24 @@ "verbosity": { "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", "type": "string", - "enum": ["FULL", "SHORT"] + "enum": [ + "FULL", + "SHORT" + ] }, "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json index fc01964d..720b7174 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json @@ -3,7 +3,12 @@ "items": { "description": "This type represents a subscription related to notifications about VNF lifecycle changes.\n", "type": "object", - "required": ["id", "callbackUri", "verbosity", "_links"], + "required": [ + "id", + "callbackUri", + "verbosity", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -20,20 +25,28 @@ { "oneOf": [ { - "required": ["vnfdId"] + "required": [ + "vnfdId" + ] }, { - "required": ["vnfProductsFromProviders"] + "required": [ + "vnfProductsFromProviders" + ] } ] }, { "oneOf": [ { - "required": ["vnfInstanceIds"] + "required": [ + "vnfInstanceIds" + ] }, { - "required": ["vnfInstanceNames"] + "required": [ + "vnfInstanceNames" + ] } ] } @@ -52,7 +65,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProvider"], + "required": [ + "vnfProvider" + ], "properties": { "vnfProvider": { "description": "Name of the VNF provider to match.\n", @@ -63,7 +78,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProductName"], + "required": [ + "vnfProductName" + ], "properties": { "vnfProductName": { "description": "Name of the VNF product to match.\n", @@ -74,7 +91,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfSoftwareVersion"], + "required": [ + "vnfSoftwareVersion" + ], "properties": { "vnfSoftwareVersion": { "description": "A version.\n", @@ -174,17 +193,24 @@ "verbosity": { "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", "type": "string", - "enum": ["FULL", "SHORT"] + "enum": [ + "FULL", + "SHORT" + ] }, "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json index 8f2bb990..7a580655 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json @@ -1,7 +1,12 @@ { "description": "This type represents a subscription related to notifications about VNF lifecycle changes.\n", "type": "object", - "required": ["id", "callbackUri", "verbosity", "_links"], + "required": [ + "id", + "callbackUri", + "verbosity", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -18,20 +23,28 @@ { "oneOf": [ { - "required": ["vnfdId"] + "required": [ + "vnfdId" + ] }, { - "required": ["vnfProductsFromProviders"] + "required": [ + "vnfProductsFromProviders" + ] } ] }, { "oneOf": [ { - "required": ["vnfInstanceIds"] + "required": [ + "vnfInstanceIds" + ] }, { - "required": ["vnfInstanceNames"] + "required": [ + "vnfInstanceNames" + ] } ] } @@ -50,7 +63,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProvider"], + "required": [ + "vnfProvider" + ], "properties": { "vnfProvider": { "description": "Name of the VNF provider to match.\n", @@ -61,7 +76,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProductName"], + "required": [ + "vnfProductName" + ], "properties": { "vnfProductName": { "description": "Name of the VNF product to match.\n", @@ -72,7 +89,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfSoftwareVersion"], + "required": [ + "vnfSoftwareVersion" + ], "properties": { "vnfSoftwareVersion": { "description": "A version.\n", @@ -172,17 +191,24 @@ "verbosity": { "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", "type": "string", - "enum": ["FULL", "SHORT"] + "enum": [ + "FULL", + "SHORT" + ] }, "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -193,4 +219,4 @@ } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfIdentifierCreationNotification.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfIdentifierCreationNotification.schema.json index 9f8efd57..ad05e020 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfIdentifierCreationNotification.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfIdentifierCreationNotification.schema.json @@ -17,7 +17,9 @@ "notificationType": { "description": "Discriminator for the different notification types. Shall be set to \"VnfIdentifierCreationNotification\" for this notification type.\n", "type": "string", - "enum": ["VnfIdentifierCreationNotification"] + "enum": [ + "VnfIdentifierCreationNotification" + ] }, "subscriptionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -35,12 +37,17 @@ "_links": { "description": "This type represents the links to resources that a notification can contain.\n", "type": "object", - "required": ["vnfInstance", "subscription"], + "required": [ + "vnfInstance", + "subscription" + ], "properties": { "vnfInstance": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -51,7 +58,9 @@ "subscription": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -62,7 +71,9 @@ "vnfLcmOpOcc": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json index 70f4b769..196372c2 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json @@ -3,10 +3,14 @@ "type": "object", "oneOf": [ { - "required": ["changedInfo"] + "required": [ + "changedInfo" + ] }, { - "required": ["modificationsTriggeredByVnfPkgChange"] + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] } ], "required": [ @@ -90,12 +94,18 @@ "cancelMode": { "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n", "type": "string", - "enum": ["GRACEFUL", "FORCEFUL"] + "enum": [ + "GRACEFUL", + "FORCEFUL" + ] }, "error": { "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807, the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807.\n", "type": "object", - "required": ["status", "detail"], + "required": [ + "status", + "detail" + ], "properties": { "type": { "description": "A URI reference according to IETF RFC 3986 that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", @@ -131,7 +141,12 @@ "items": { "description": "This type provides information about added, deleted, modified and temporary VNFCs.\nNOTE:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer \n (i.e. the NFVO) to assist in correlating the resource changes performed during \n the LCM operation with the granted resources in a specific Grant exchange, which \n is identified by the \"grantId\" available in the \"Individual VNF lifecycle management \n operation occurrence\" and the \"id\" in the \"Individual Grant\".\n", "type": "object", - "required": ["id", "vduId", "changeType", "computeResource"], + "required": [ + "id", + "vduId", + "changeType", + "computeResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -148,10 +163,17 @@ "changeType": { "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"] + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] }, "computeResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -272,7 +294,9 @@ ] }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -359,14 +383,20 @@ "changeType": { "description": "Signals the type of change. Permitted values: -\tADDED - MODIFIED -\tREMOVED\n", "type": "string", - "enum": ["ADDED", "MODIFIED", "REMOVED"] + "enum": [ + "ADDED", + "MODIFIED", + "REMOVED" + ] }, "extCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -445,10 +475,17 @@ "changeType": { "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"] + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] }, "storageResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -539,7 +576,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -592,7 +631,11 @@ "items": { "description": "This type provides information about added, deleted and modified virtual IP CP instances.\n", "type": "object", - "required": ["cpInstanceId", "cpdId", "changeType"], + "required": [ + "cpInstanceId", + "cpdId", + "changeType" + ], "properties": { "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -609,7 +652,11 @@ "changeType": { "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED -\tMODIFIED\n", "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED"] + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED" + ] } } } @@ -620,14 +667,20 @@ "items": { "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", "type": "object", - "required": ["id", "resourceHandle", "currentVnfExtCpData"], + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -677,14 +730,19 @@ "items": { "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -749,7 +807,9 @@ "items": { "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", "type": "object", - "required": ["cpdId"], + "required": [ + "cpdId" + ], "properties": { "cpdId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -762,13 +822,19 @@ "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { - "required": ["linkPortId"] + "required": [ + "linkPortId" + ] }, { - "required": ["cpProtocolData"] + "required": [ + "cpProtocolData" + ] }, { - "required": ["netAttDefResourceId"] + "required": [ + "netAttDefResourceId" + ] } ], "type": "object", @@ -799,33 +865,48 @@ "items": { "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["fixedAddresses"] + "required": [ + "fixedAddresses" + ] }, { - "required": ["numDynamicAddresses"] + "required": [ + "numDynamicAddresses" + ] }, { - "required": ["ipAddressRange"] + "required": [ + "ipAddressRange" + ] } ], "properties": { @@ -837,7 +918,10 @@ "segmentationType": { "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", - "enum": ["VLAN", "INHERIT"] + "enum": [ + "VLAN", + "INHERIT" + ] }, "segmentationId": { "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", @@ -848,12 +932,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "fixedAddresses": { "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -900,12 +989,17 @@ "virtualCpAddress": { "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -933,14 +1027,19 @@ "items": { "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", "type": "object", - "required": ["netAttDefResourceInfoId", "netAttDefResource"], + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], "properties": { "netAttDefResourceInfoId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1048,7 +1147,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1102,7 +1203,11 @@ "coordinationResult": { "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\".\n", "type": "string", - "enum": ["CONTINUE", "ABORT", "CANCELLED"] + "enum": [ + "CONTINUE", + "ABORT", + "CANCELLED" + ] }, "startTime": { "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", @@ -1122,7 +1227,10 @@ "endpointType": { "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", "type": "string", - "enum": ["MGMT", "VNF"] + "enum": [ + "MGMT", + "VNF" + ] } } } @@ -1156,7 +1264,10 @@ "endpointType": { "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", "type": "string", - "enum": ["MGMT", "VNF"] + "enum": [ + "MGMT", + "VNF" + ] } } } @@ -1171,12 +1282,17 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self", "vnfInstance"], + "required": [ + "self", + "vnfInstance" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1187,7 +1303,9 @@ "vnfInstance": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1198,7 +1316,9 @@ "grant": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1209,7 +1329,9 @@ "cancel": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1220,7 +1342,9 @@ "retry": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1231,7 +1355,9 @@ "rollback": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1242,7 +1368,9 @@ "fail": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1253,7 +1381,9 @@ "vnfSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1264,4 +1394,4 @@ } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json index 29ccb930..aa30499e 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json @@ -5,10 +5,14 @@ "type": "object", "oneOf": [ { - "required": ["changedInfo"] + "required": [ + "changedInfo" + ] }, { - "required": ["modificationsTriggeredByVnfPkgChange"] + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] } ], "required": [ @@ -92,12 +96,18 @@ "cancelMode": { "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n", "type": "string", - "enum": ["GRACEFUL", "FORCEFUL"] + "enum": [ + "GRACEFUL", + "FORCEFUL" + ] }, "error": { "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807, the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807.\n", "type": "object", - "required": ["status", "detail"], + "required": [ + "status", + "detail" + ], "properties": { "type": { "description": "A URI reference according to IETF RFC 3986 that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", @@ -133,7 +143,12 @@ "items": { "description": "This type provides information about added, deleted, modified and temporary VNFCs.\nNOTE:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer \n (i.e. the NFVO) to assist in correlating the resource changes performed during \n the LCM operation with the granted resources in a specific Grant exchange, which \n is identified by the \"grantId\" available in the \"Individual VNF lifecycle management \n operation occurrence\" and the \"id\" in the \"Individual Grant\".\n", "type": "object", - "required": ["id", "vduId", "changeType", "computeResource"], + "required": [ + "id", + "vduId", + "changeType", + "computeResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -150,10 +165,17 @@ "changeType": { "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"] + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] }, "computeResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -274,7 +296,9 @@ ] }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -361,14 +385,20 @@ "changeType": { "description": "Signals the type of change. Permitted values: -\tADDED - MODIFIED -\tREMOVED\n", "type": "string", - "enum": ["ADDED", "MODIFIED", "REMOVED"] + "enum": [ + "ADDED", + "MODIFIED", + "REMOVED" + ] }, "extCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -447,10 +477,17 @@ "changeType": { "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"] + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] }, "storageResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -541,7 +578,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -594,7 +633,11 @@ "items": { "description": "This type provides information about added, deleted and modified virtual IP CP instances.\n", "type": "object", - "required": ["cpInstanceId", "cpdId", "changeType"], + "required": [ + "cpInstanceId", + "cpdId", + "changeType" + ], "properties": { "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -611,7 +654,11 @@ "changeType": { "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED -\tMODIFIED\n", "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED"] + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED" + ] } } } @@ -622,14 +669,20 @@ "items": { "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", "type": "object", - "required": ["id", "resourceHandle", "currentVnfExtCpData"], + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -679,14 +732,19 @@ "items": { "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -751,7 +809,9 @@ "items": { "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", "type": "object", - "required": ["cpdId"], + "required": [ + "cpdId" + ], "properties": { "cpdId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -764,13 +824,19 @@ "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { - "required": ["linkPortId"] + "required": [ + "linkPortId" + ] }, { - "required": ["cpProtocolData"] + "required": [ + "cpProtocolData" + ] }, { - "required": ["netAttDefResourceId"] + "required": [ + "netAttDefResourceId" + ] } ], "type": "object", @@ -801,7 +867,9 @@ "items": { "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", @@ -816,21 +884,31 @@ "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["fixedAddresses"] + "required": [ + "fixedAddresses" + ] }, { - "required": ["numDynamicAddresses"] + "required": [ + "numDynamicAddresses" + ] }, { - "required": ["ipAddressRange"] + "required": [ + "ipAddressRange" + ] } ], "properties": { @@ -842,7 +920,10 @@ "segmentationType": { "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", - "enum": ["VLAN", "INHERIT"] + "enum": [ + "VLAN", + "INHERIT" + ] }, "segmentationId": { "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", @@ -853,12 +934,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "fixedAddresses": { "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -905,12 +991,17 @@ "virtualCpAddress": { "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -938,14 +1029,19 @@ "items": { "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", "type": "object", - "required": ["netAttDefResourceInfoId", "netAttDefResource"], + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], "properties": { "netAttDefResourceInfoId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1053,7 +1149,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1107,7 +1205,11 @@ "coordinationResult": { "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\".\n", "type": "string", - "enum": ["CONTINUE", "ABORT", "CANCELLED"] + "enum": [ + "CONTINUE", + "ABORT", + "CANCELLED" + ] }, "startTime": { "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", @@ -1127,7 +1229,10 @@ "endpointType": { "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", "type": "string", - "enum": ["MGMT", "VNF"] + "enum": [ + "MGMT", + "VNF" + ] } } } @@ -1161,7 +1266,10 @@ "endpointType": { "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", "type": "string", - "enum": ["MGMT", "VNF"] + "enum": [ + "MGMT", + "VNF" + ] } } } @@ -1176,12 +1284,17 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self", "vnfInstance"], + "required": [ + "self", + "vnfInstance" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1192,7 +1305,9 @@ "vnfInstance": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1203,7 +1318,9 @@ "grant": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1214,7 +1331,9 @@ "cancel": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1225,7 +1344,9 @@ "retry": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1236,7 +1357,9 @@ "rollback": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1247,7 +1370,9 @@ "fail": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1258,7 +1383,9 @@ "vnfSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1270,4 +1397,4 @@ } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index 4d4b6cf7..1fb2c92b 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -22,7 +22,9 @@ "notificationType": { "description": "Discriminator for the different notification types. Shall be set to \"VnfLcmOperationOccurrenceNotification\" for this notification type.\n", "type": "string", - "enum": ["VnfLcmOperationOccurrenceNotification"] + "enum": [ + "VnfLcmOperationOccurrenceNotification" + ] }, "subscriptionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -36,7 +38,10 @@ "notificationStatus": { "description": "Indicates whether this notification reports about the start of a lifecycle operation or the result of a lifecycle operation. Permitted values: * START: Informs about the start of the VNF LCM operation\n occurrence.\n* RESULT: Informs about the final or intermediate result of the VNF\n LCM operation occurrence.\n", "type": "string", - "enum": ["START", "RESULT"] + "enum": [ + "START", + "RESULT" + ] }, "operationState": { "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The LCM operation has been completed successfully. FAILED_TEMP: The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED: The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK: The LCM operation is currently being rolled back. ROLLED_BACK: The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n", @@ -80,7 +85,10 @@ "verbosity": { "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", "type": "string", - "enum": ["FULL", "SHORT"] + "enum": [ + "FULL", + "SHORT" + ] }, "vnfLcmOpOccId": { "description": "An identifier with the intention of being globally unique.\n", @@ -92,7 +100,12 @@ "items": { "description": "This type provides information about added, deleted, modified and temporary VNFCs.\nNOTE:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer \n (i.e. the NFVO) to assist in correlating the resource changes performed during \n the LCM operation with the granted resources in a specific Grant exchange, which \n is identified by the \"grantId\" available in the \"Individual VNF lifecycle management \n operation occurrence\" and the \"id\" in the \"Individual Grant\".\n", "type": "object", - "required": ["id", "vduId", "changeType", "computeResource"], + "required": [ + "id", + "vduId", + "changeType", + "computeResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -109,10 +122,17 @@ "changeType": { "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"] + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] }, "computeResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -233,7 +253,9 @@ ] }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -306,7 +328,12 @@ "items": { "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\nNOTE:\tThe \"resourceDefinitionId\" attribute provides information to the API consumer (i.e. the NFVO) to assist in correlating \n the resource changes performed during the LCM operation with the granted resources in a specific Grant exchange, which \n is identified by the \"grantId\" available in the \"Individual VNF lifecycle management operation occurrence\" and the \"id\" \n in the \"Individual Grant\".\n", "type": "object", - "required": ["id", "changeType", "extCpInstanceId", "resourceHandle"], + "required": [ + "id", + "changeType", + "extCpInstanceId", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -315,14 +342,20 @@ "changeType": { "description": "Signals the type of change. Permitted values: -\tADDED - MODIFIED -\tREMOVED\n", "type": "string", - "enum": ["ADDED", "MODIFIED", "REMOVED"] + "enum": [ + "ADDED", + "MODIFIED", + "REMOVED" + ] }, "extCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -401,10 +434,17 @@ "changeType": { "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"] + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] }, "storageResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -493,7 +533,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -546,7 +588,11 @@ "items": { "description": "This type provides information about added, deleted and modified virtual IP CP instances.\n", "type": "object", - "required": ["cpInstanceId", "cpdId", "changeType"], + "required": [ + "cpInstanceId", + "cpdId", + "changeType" + ], "properties": { "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -563,7 +609,11 @@ "changeType": { "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED -\tMODIFIED\n", "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED"] + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED" + ] } } } @@ -574,7 +624,11 @@ "items": { "description": "This type provides information about added, deleted and modified virtual CP instances.\n", "type": "object", - "required": ["cpInstanceId", "cpdId", "changeType"], + "required": [ + "cpInstanceId", + "cpdId", + "changeType" + ], "properties": { "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -591,7 +645,11 @@ "changeType": { "description": "Signals the type of change.\nPermitted values:\n - ADDED\n - REMOVED\n - MODIFIED\n", "type": "string", - "enum": ["ADDED", "REMOVED", "MODIFIED"] + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED" + ] } } } @@ -602,7 +660,10 @@ "items": { "description": "This type provides input information about added, deleted, and modified certificate contents.\n", "type": "object", - "required": ["certificateInfoId", "changeType"], + "required": [ + "certificateInfoId", + "changeType" + ], "properties": { "certificateInfoId": { "description": "An identifier with the intention of being globally unique.\n", @@ -627,7 +688,11 @@ "changeType": { "description": "Signals the type of change.", "type": "string", - "enum": ["ADD", "REMOVE", "MODIFY"] + "enum": [ + "ADD", + "REMOVE", + "MODIFY" + ] } } } @@ -638,14 +703,20 @@ "items": { "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", "type": "object", - "required": ["id", "resourceHandle", "currentVnfExtCpData"], + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -695,14 +766,19 @@ "items": { "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -767,7 +843,9 @@ "items": { "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", "type": "object", - "required": ["cpdId"], + "required": [ + "cpdId" + ], "properties": { "cpdId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -780,13 +858,19 @@ "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { - "required": ["linkPortId"] + "required": [ + "linkPortId" + ] }, { - "required": ["cpProtocolData"] + "required": [ + "cpProtocolData" + ] }, { - "required": ["netAttDefResourceId"] + "required": [ + "netAttDefResourceId" + ] } ], "type": "object", @@ -817,33 +901,48 @@ "items": { "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["fixedAddresses"] + "required": [ + "fixedAddresses" + ] }, { - "required": ["numDynamicAddresses"] + "required": [ + "numDynamicAddresses" + ] }, { - "required": ["ipAddressRange"] + "required": [ + "ipAddressRange" + ] } ], "properties": { @@ -855,7 +954,10 @@ "segmentationType": { "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", - "enum": ["VLAN", "INHERIT"] + "enum": [ + "VLAN", + "INHERIT" + ] }, "segmentationId": { "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", @@ -866,12 +968,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "fixedAddresses": { "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -918,12 +1025,17 @@ "virtualCpAddress": { "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -951,14 +1063,19 @@ "items": { "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", "type": "object", - "required": ["netAttDefResourceInfoId", "netAttDefResource"], + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], "properties": { "netAttDefResourceInfoId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1066,7 +1183,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1096,7 +1215,10 @@ "error": { "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807, the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807.\n", "type": "object", - "required": ["status", "detail"], + "required": [ + "status", + "detail" + ], "properties": { "type": { "description": "A URI reference according to IETF RFC 3986 that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", @@ -1125,12 +1247,17 @@ "_links": { "description": "This type represents the links to resources that a notification can contain.\n", "type": "object", - "required": ["vnfInstance", "subscription"], + "required": [ + "vnfInstance", + "subscription" + ], "properties": { "vnfInstance": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1141,7 +1268,9 @@ "subscription": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1152,7 +1281,9 @@ "vnfLcmOpOcc": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1163,4 +1294,4 @@ } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json index 91484f61..34ab7ce1 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json @@ -1,7 +1,10 @@ { "description": "This type represents an \"Individual VNF snapshot\" resource.\n", "type": "object", - "required": ["id", "_links"], + "required": [ + "id", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -101,7 +104,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -132,7 +137,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -163,7 +170,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -191,12 +200,19 @@ "instantiationState": { "description": "The instantiation state of the VNF. Permitted values: - NOT_INSTANTIATED: The VNF instance is terminated or not instantiated. - INSTANTIATED: The VNF instance is instantiated.\n", "type": "string", - "enum": ["NOT_INSTANTIATED", "INSTANTIATED"] + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] }, "instantiatedVnfInfo": { "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", "type": "object", - "required": ["flavourId", "vnfState", "extCpInfo"], + "required": [ + "flavourId", + "vnfState", + "extCpInfo" + ], "properties": { "flavourId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -205,7 +221,10 @@ "vnfState": { "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", "type": "string", - "enum": ["STARTED", "STOPPED"] + "enum": [ + "STARTED", + "STOPPED" + ] }, "scaleStatus": { "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", @@ -213,7 +232,10 @@ "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", "type": "object", - "required": ["aspectId", "scaleLevel"], + "required": [ + "aspectId", + "scaleLevel" + ], "properties": { "aspectId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -236,7 +258,10 @@ "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", "type": "object", - "required": ["aspectId", "scaleLevel"], + "required": [ + "aspectId", + "scaleLevel" + ], "properties": { "aspectId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -260,16 +285,27 @@ "items": { "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n “extLinkPorts” attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", - "required": ["id", "cpdId", "cpConfigId", "cpProtocolInfo"], + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], "oneOf": [ { - "required": ["associatedVnfcCpId"] + "required": [ + "associatedVnfcCpId" + ] }, { - "required": ["associatedVipCpId"] + "required": [ + "associatedVipCpId" + ] }, { - "required": ["associatedVnfVirtualLinkId"] + "required": [ + "associatedVnfVirtualLinkId" + ] } ], "properties": { @@ -295,30 +331,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -336,12 +385,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -388,12 +442,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -451,7 +510,10 @@ "items": { "description": "This type provides information related to virtual IP (VIP) CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", - "required": ["cpInstanceId", "cpdId"], + "required": [ + "cpInstanceId", + "cpdId" + ], "properties": { "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -475,30 +537,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -516,12 +591,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -568,12 +648,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -630,7 +715,9 @@ "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -684,30 +771,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -725,12 +825,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -777,12 +882,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -813,7 +923,9 @@ "items": { "description": "This type provides additional service information of the virtual CP instance used to expose properties of the virtual CP to NFV-MANO.\nNOTE: This attribute shall only be present if additional information is needed to identify the service \n termination within the VNF, such as for example a URL path information in an HTTP request required \n to allow a single virtual CP IP address to be used for several HTTP based services that use the \n same port number.\n", "type": "object", - "required": ["portInfo"], + "required": [ + "portInfo" + ], "properties": { "portInfo": { "description": "Service port numbers exposed by the virtual CP instance.\n", @@ -835,7 +947,11 @@ "protocol": { "description": "The L4 protocol for this port exposed by the virtual CP instance.\nPermitted values: - TCP - UDP - SCTP\n", "type": "string", - "enum": ["TCP", "UDP", "SCTP"] + "enum": [ + "TCP", + "UDP", + "SCTP" + ] }, "port": { "description": "The L4 port number exposed by the virtual CP instance.\n", @@ -868,14 +984,20 @@ "items": { "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", "type": "object", - "required": ["id", "resourceHandle", "currentVnfExtCpData"], + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -925,14 +1047,19 @@ "items": { "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -997,7 +1124,9 @@ "items": { "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", "type": "object", - "required": ["cpdId"], + "required": [ + "cpdId" + ], "properties": { "cpdId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -1010,13 +1139,19 @@ "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { - "required": ["linkPortId"] + "required": [ + "linkPortId" + ] }, { - "required": ["cpProtocolData"] + "required": [ + "cpProtocolData" + ] }, { - "required": ["netAttDefResourceId"] + "required": [ + "netAttDefResourceId" + ] } ], "type": "object", @@ -1047,7 +1182,9 @@ "items": { "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", @@ -1062,15 +1199,21 @@ "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["fixedAddresses"] + "required": [ + "fixedAddresses" + ] }, { "required": [ @@ -1078,7 +1221,9 @@ ] }, { - "required": ["ipAddressRange"] + "required": [ + "ipAddressRange" + ] } ], "properties": { @@ -1090,7 +1235,10 @@ "segmentationType": { "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", - "enum": ["VLAN", "INHERIT"] + "enum": [ + "VLAN", + "INHERIT" + ] }, "segmentationId": { "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", @@ -1101,12 +1249,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "fixedAddresses": { "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -1153,12 +1306,17 @@ "virtualCpAddress": { "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -1196,7 +1354,9 @@ "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1286,7 +1446,9 @@ "type": "string" }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1336,14 +1498,19 @@ "items": { "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1394,7 +1561,10 @@ "cpInstanceType": { "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", "type": "string", - "enum": ["VNFC_CP", "EXT_CP"] + "enum": [ + "VNFC_CP", + "EXT_CP" + ] }, "vipCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1423,7 +1593,9 @@ "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1498,7 +1670,10 @@ "type": "array", "items": { "type": "object", - "required": ["id", "performanceMetric"], + "required": [ + "id", + "performanceMetric" + ], "properties": { "id": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -1529,7 +1704,11 @@ "items": { "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases.\nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", - "required": ["id", "vduId", "computeResource"], + "required": [ + "id", + "vduId", + "computeResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1544,7 +1723,9 @@ "type": "string" }, "computeResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1609,7 +1790,10 @@ "type": "array", "items": { "type": "object", - "required": ["id", "cpdId"], + "required": [ + "id", + "cpdId" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1629,7 +1813,9 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", @@ -1644,18 +1830,26 @@ "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -1673,12 +1867,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -1725,12 +1924,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -1801,7 +2005,9 @@ "type": "string" }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1859,14 +2065,19 @@ "items": { "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1917,7 +2128,10 @@ "cpInstanceType": { "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", "type": "string", - "enum": ["VNFC_CP", "EXT_CP"] + "enum": [ + "VNFC_CP", + "EXT_CP" + ] }, "vipCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1962,7 +2176,9 @@ "type": "string" }, "storageResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -2061,7 +2277,10 @@ "mcioType": { "description": "The type of MCIO. Specific values, their semantics and associated MCIO types are defined in clause 5.5.4.9. Additional values are also permitted. See note 1.\n", "type": "string", - "enum": ["Deployment", "StatefulSet"] + "enum": [ + "Deployment", + "StatefulSet" + ] }, "desiredInstances": { "description": "Number of desired MCIO instances.\n", @@ -2091,12 +2310,16 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2107,7 +2330,9 @@ "indicators": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2118,7 +2343,9 @@ "instantiate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2129,7 +2356,9 @@ "terminate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2140,7 +2369,9 @@ "scale": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2151,7 +2382,9 @@ "scaleToLevel": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2162,7 +2395,9 @@ "changeFlavour": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2173,7 +2408,9 @@ "heal": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2184,7 +2421,9 @@ "operate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2195,7 +2434,9 @@ "changeExtConn": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2206,7 +2447,9 @@ "createSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2217,7 +2460,9 @@ "revertToSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2228,7 +2473,9 @@ "changeCurrentVnfPkg": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2276,7 +2523,9 @@ "type": "string" }, "computeSnapshotResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -2325,7 +2574,9 @@ "type": "array", "items": { "type": "object", - "required": ["storageResourceId"], + "required": [ + "storageResourceId" + ], "properties": { "storageResourceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -2348,7 +2599,10 @@ "vnfStateSnapshotInfo": { "description": "This type represents information about VNF-specific state snapshot data.\n", "type": "object", - "required": ["checksum", "isEncrypted"], + "required": [ + "checksum", + "isEncrypted" + ], "properties": { "checksum": { "description": "Cheksum description\n", @@ -2371,12 +2625,16 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2387,7 +2645,9 @@ "vnfStateSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2402,12 +2662,16 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2418,7 +2682,9 @@ "takenFrom": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json index 3784f137..866ff1c9 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json @@ -2,2654 +2,2654 @@ "description": "This type represents attribute modifications that were performed on an \"Individual VNF snapshot\" \nresource. The attributes that can be included consist of those requested to be modified explicitly \nin the \"VnfSnapshotInfoModificationRequest\" data structure, and additional attributes of the \n\"VnfSnapshotInfo\" data structure that were modified implicitly.\n", "type": "object", "properties": { - "vnfSnapshotPkgId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfSnapshot": { - "description": "This type represents a VNF snapshot.\n", - "type": "object", - "required": [ - "id", - "vnfInstanceId", - "triggeredAt", - "vnfdId", - "vnfInfo", - "vnfcSnapshots" - ], - "properties": { - "id": { + "vnfSnapshotPkgId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "creationStartedAt": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "creationFinishedAt": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstance": { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n data types (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "vnfSnapshot": { + "description": "This type represents a VNF snapshot.\n", "type": "object", "required": [ - "id", - "vnfdId", - "vnfProvider", - "vnfProductName", - "vnfSoftwareVersion", - "vnfdVersion", - "instantiationState", - "_links" + "id", + "vnfInstanceId", + "triggeredAt", + "vnfdId", + "vnfInfo", + "vnfcSnapshots" ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstanceName": { - "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfProductName": { - "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "vimConnectionInfo": { - "description": "Information about VIM or CISM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if - the resources of at least of the VNFCs are managed by a VIM and VNF-related resource management in direct mode is applicable. - the resources of at least of the VNFCs are managed by a CISM. This attribute can be modified with the PATCH method. If VIM connection information is provisioned to the VNFM by means outside the scope of the present document, the information in the \"vimConnectionInfo\" attribute provides necessary information for binding the VnfInstance representing the \"Individual VNF instance\" to the applicable VIM connection information used to perform resource management for the VNF instance. See also the definition of the \"VimConnectionInfo\" in clause 4.4.1.6.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", - "type": "object", - "required": [ - "vimType" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", - "type": "string" - }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "cirConnectionInfo": { - "description": "Information about the CIR connection for managing OS container images for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", - "type": "object", - "required": [ - "vimType" - ], - "properties": { - "vimId": { + "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", - "type": "string" - }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "mciopRepositoryInfo": { - "description": "Information about the MCIOP repository for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise. See note 1.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", - "type": "object", - "required": [ - "vimType" - ], - "properties": { - "vimId": { + }, + "vnfInstanceId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", - "type": "string" - }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "instantiationState": { - "description": "The instantiation state of the VNF. Permitted values: - NOT_INSTANTIATED: The VNF instance is terminated or not instantiated. - INSTANTIATED: The VNF instance is instantiated.\n", - "type": "string", - "enum": [ - "NOT_INSTANTIATED", - "INSTANTIATED" - ] - }, - "instantiatedVnfInfo": { - "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", - "type": "object", - "required": [ - "flavourId", - "vnfState", - "extCpInfo" - ], - "properties": { - "flavourId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" }, - "vnfState": { - "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", - "enum": [ - "STARTED", - "STOPPED" - ] + "format": "date-time" }, - "scaleStatus": { - "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", - "type": "array", - "items": { - "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstance": { + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n data types (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", "type": "object", "required": [ - "aspectId", - "scaleLevel" + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "instantiationState", + "_links" ], "properties": { - "aspectId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "vnfInstanceName": { + "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" }, - "scaleToLevel": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "maxScaleLevels": { - "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", - "type": "array", - "items": { - "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", - "type": "object", - "required": [ - "aspectId", - "scaleLevel" - ], - "properties": { - "aspectId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" }, "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "scaleToLevel": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", - "type": "array", - "minItems": 1, - "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n “extLinkPorts” attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", - "type": "object", - "required": [ - "id", - "cpdId", - "cpConfigId", - "cpProtocolInfo" - ], - "oneOf": [ - { - "required": [ - "associatedVnfcCpId" - ] + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - { - "required": [ - "associatedVipCpId" - ] + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" }, - { - "required": [ - "associatedVnfVirtualLinkId" - ] - } - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" }, - "cpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" + "vnfdVersion": { + "description": "A version.\n", + "type": "string" }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "vimConnectionInfo": { + "description": "Information about VIM or CISM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if - the resources of at least of the VNFCs are managed by a VIM and VNF-related resource management in direct mode is applicable. - the resources of at least of the VNFCs are managed by a CISM. This attribute can be modified with the PATCH method. If VIM connection information is provisioned to the VNFM by means outside the scope of the present document, the information in the \"vimConnectionInfo\" attribute provides necessary information for binding the VnfInstance representing the \"Individual VNF instance\" to the applicable VIM connection information used to perform resource management for the VNF instance. See also the definition of the \"VimConnectionInfo\" in clause 4.4.1.6.\n", "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } + "required": [ + "vimType" ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } } + } + }, + "cirConnectionInfo": { + "description": "Information about the CIR connection for managing OS container images for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "type": "object", + "required": [ + "vimType" ], "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - } - } + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + } + }, + "mciopRepositoryInfo": { + "description": "Information about the MCIOP repository for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise. See note 1.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ - "type" + "vimType" ], "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } } - } } - } - }, - "extLinkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "associatedVnfcCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "associatedVipCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "associatedVirtualCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "associatedVnfVirtualLinkId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceInfo” structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - } - }, - "vipCpInfo": { - "description": "VIP CPs that are part of the VNF instance. Shall be present when that particular VIP CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n", - "type": "array", - "minItems": 1, - "items": { - "description": "This type provides information related to virtual IP (VIP) CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "cpInstanceId", - "cpdId" - ], - "properties": { - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" + "instantiationState": { + "description": "The instantiation state of the VNF. Permitted values: - NOT_INSTANTIATED: The VNF instance is terminated or not instantiated. - INSTANTIATED: The VNF instance is instantiated.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] }, - "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for layer 3. There may be one cpProtocolInfo for layer 2.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", "type": "object", "required": [ - "layerProtocol" + "flavourId", + "vnfState", + "extCpInfo" ], "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] + "flavourId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "vnfState": { + "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" + "enum": [ + "STARTED", + "STOPPED" + ] }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", "type": "array", "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", "type": "object", "required": [ - "minAddress", - "maxAddress" + "aspectId", + "scaleLevel" ], "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleToLevel": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } } - } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } - } - } - } - } - }, - "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the VIP CP instance. See note.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "virtualCpInfo": { - "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular Virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", - "type": "array", - "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", - "type": "object", - "required": [ - "cpInstanceId", - "cpdId", - "resourceHandle", - "vduIds" - ], - "properties": { - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", "type": "array", "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", "type": "object", "required": [ - "minAddress", - "maxAddress" + "aspectId", + "scaleLevel" ], "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "scaleToLevel": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } } - } - } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } - } - } - } - } - }, - "vduIds": { - "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note.\n", - "type": "array", - "minItems": 1, - "items": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - } - }, - "additionalServiceInfo": { - "description": "Additional service identification information of the virtual CP instance.\n", - "type": "array", - "items": { - "description": "This type provides additional service information of the virtual CP instance used to expose properties of the virtual CP to NFV-MANO.\nNOTE: This attribute shall only be present if additional information is needed to identify the service \n termination within the VNF, such as for example a URL path information in an HTTP request required \n to allow a single virtual CP IP address to be used for several HTTP based services that use the \n same port number.\n", - "type": "object", - "required": [ - "portInfo" - ], - "properties": { - "portInfo": { - "description": "Service port numbers exposed by the virtual CP instance.\n", - "minItems": 1, - "type": "array", - "items": { - "description": "This type describes the service identifying port properties exposed by the virtual CP instance.\n", - "type": "object", - "required": [ - "name", - "port", - "portConfigurable" - ], - "properties": { - "name": { - "description": "The name of the port exposed by the virtual CP instance.\n", - "type": "string" - }, - "protocol": { - "description": "The L4 protocol for this port exposed by the virtual CP instance.\nPermitted values: - TCP - UDP - SCTP\n", - "type": "string", - "enum": [ - "TCP", - "UDP", - "SCTP" - ] - }, - "port": { - "description": "The L4 port number exposed by the virtual CP instance.\n", - "type": "integer" - }, - "portConfigurable": { - "description": "The Boolean is a data type having two values (true and false).\n", - "type": "boolean" + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n “extLinkPorts” attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [ + { + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVipCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "associatedVipCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "associatedVirtualCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the “NetAttDefResourceInfo” structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } } - } - } - }, - "serviceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "extVirtualLinkInfo": { - "description": "Information about the external VLs the VNF instance is connected to.\n", - "type": "array", - "items": { - "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", - "type": "object", - "required": [ - "id", - "resourceHandle", - "currentVnfExtCpData" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "secondaryCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "currentVnfExtCpData": { - "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", - "type": "array", - "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", - "type": "object", - "required": [ - "cpdId" - ], - "properties": { - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", - "anyOf": [ - { - "required": [ - "linkPortId" - ] - }, - { - "required": [ - "cpProtocolData" - ] - }, - { - "required": [ - "netAttDefResourceId" - ] - } - ], - "type": "object", - "properties": { - "parentCpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "linkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "createExtLinkPort": { - "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", - "type": "boolean" - }, - "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceData” structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "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.\n", "type": "array", + "minItems": 1, "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "description": "This type provides information related to virtual IP (VIP) CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "cpInstanceId", + "cpdId" + ], + "properties": { + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for layer 3. There may be one cpProtocolInfo for layer 2.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "associatedVnfcCpIds": { + "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the VIP CP instance. See note.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } } - }, - "cpProtocolData": { - "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", + }, + "virtualCpInfo": { + "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular Virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", "items": { - "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", "type": "object", "required": [ - "layerProtocol" + "cpInstanceId", + "cpdId", + "resourceHandle", + "vduIds" ], "properties": { - "layerProtocol": { - "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI’s transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" }, - { + "resourceHandle": { "required": [ - "numDynamicAddresses" - ] + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } }, - { - "required": [ - "ipAddressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" }, - "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", - "type": "string", - "enum": [ - "VLAN", - "INHERIT" - ] + "cpProtocolInfo": { + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } }, - "segmentationId": { - "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", - "type": "string" + "vduIds": { + "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } }, - "ipAddresses": { - "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", + "additionalServiceInfo": { + "description": "Additional service identification information of the virtual CP instance.\n", "type": "array", "items": { - "type": "object", + "description": "This type provides additional service information of the virtual CP instance used to expose properties of the virtual CP to NFV-MANO.\nNOTE: This attribute shall only be present if additional information is needed to identify the service \n termination within the VNF, such as for example a URL path information in an HTTP request required \n to allow a single virtual CP IP address to be used for several HTTP based services that use the \n same port number.\n", + "type": "object", + "required": [ + "portInfo" + ], + "properties": { + "portInfo": { + "description": "Service port numbers exposed by the virtual CP instance.\n", + "minItems": 1, + "type": "array", + "items": { + "description": "This type describes the service identifying port properties exposed by the virtual CP instance.\n", + "type": "object", + "required": [ + "name", + "port", + "portConfigurable" + ], + "properties": { + "name": { + "description": "The name of the port exposed by the virtual CP instance.\n", + "type": "string" + }, + "protocol": { + "description": "The L4 protocol for this port exposed by the virtual CP instance.\nPermitted values: - TCP - UDP - SCTP\n", + "type": "string", + "enum": [ + "TCP", + "UDP", + "SCTP" + ] + }, + "port": { + "description": "The L4 port number exposed by the virtual CP instance.\n", + "type": "integer" + }, + "portConfigurable": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + } + } + } + }, + "serviceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { "required": [ - "type" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "fixedAddresses": { - "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" }, - "numDynamicAddresses": { - "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "integer" + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } }, - "addressRange": { - "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", "type": "object", "required": [ - "minAddress", - "maxAddress" + "id", + "resourceHandle" ], "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "secondaryCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } } - } - } - }, - "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "anyOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + }, + { + "required": [ + "netAttDefResourceId" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "createExtLinkPort": { + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "type": "boolean" + }, + "netAttDefResourceId": { + "description": "Identifier of the “NetAttDefResourceData” structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", + "type": "array", + "items": { + "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI’s transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationType": { + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "type": "string", + "enum": [ + "VLAN", + "INHERIT" + ] + }, + "segmentationId": { + "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } + "extNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", + "type": "object", + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], + "properties": { + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "netAttDefResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "associatedExtCpId": { + "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } } - } } - } } - } - } - } - } - } - }, - "extNetAttDefResource": { - "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", - "type": "array", - "items": { - "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", - "type": "object", - "required": [ - "netAttDefResourceInfoId", - "netAttDefResource" - ], - "properties": { - "netAttDefResourceInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "netAttDefResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } + "extManagedVirtualLinkInfo": { + "description": "Information about the externally-managed internal VLs of the VNF instance. See notes 5 and 6.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "vnfNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", + "type": "object", + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], + "properties": { + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "netAttDefResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "associatedExtCpId": { + "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + }, + "extManagedMultisiteVirtualLinkId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } } }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "associatedExtCpId": { - "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "associatedVnfcCpId": { - "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - } - } - } - } - } - } - }, - "extManagedVirtualLinkInfo": { - "description": "Information about the externally-managed internal VLs of the VNF instance. See notes 5 and 6.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "vnfLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } + "monitoringParameters": { + "description": "Active monitoring parameters.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "performanceMetric" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } } }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - }, - "vipCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "vnfNetAttDefResource": { - "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", - "type": "array", - "items": { - "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", - "type": "object", - "required": [ - "netAttDefResourceInfoId", - "netAttDefResource" - ], - "properties": { - "netAttDefResourceInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "netAttDefResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", "type": "string" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } + "vnfcResourceInfo": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases.\nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources or references to Storage MCIOs. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "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.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. See note 3.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "parentCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the “NetAttDefResourceInfo” structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } } }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "associatedExtCpId": { - "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "associatedVnfcCpId": { - "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - } - } - } - }, - "extManagedMultisiteVirtualLinkId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "monitoringParameters": { - "description": "Active monitoring parameters.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "performanceMetric" - ], - "properties": { - "id": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "name": { - "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", - "type": "string" - }, - "performanceMetric": { - "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", - "type": "string" - } - } - } - }, - "localizationLanguage": { - "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", - "type": "string" - }, - "vnfcResourceInfo": { - "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases.\nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "vnfVirtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance. See note 6.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires including\n a related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the\n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence\n notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "zoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } }, - "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" + "mcioInfo": { + "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes®, the type of MCIO corresponds to the \n “kind” property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes® instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes® instance, the mcioName is the name \n field of the resource object. \n", + "type": "object", + "required": [ + "mcioId", + "mcioName", + "mcioNamespace", + "vduId", + "cismId", + "mcioType", + "desiredInstances", + "availableInstances" + ], + "properties": { + "mcioId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "mcioName": { + "description": "Human readable name of this MCIO. See note 4.\n", + "type": "string" + }, + "mcioNamespace": { + "description": "Namespace of this MCIO.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cismId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "mcioType": { + "description": "The type of MCIO. Specific values, their semantics and associated MCIO types are defined in clause 5.5.4.9. Additional values are also permitted. See note 1.\n", + "type": "string", + "enum": [ + "Deployment", + "StatefulSet" + ] + }, + "desiredInstances": { + "description": "Number of desired MCIO instances.\n", + "type": "integer" + }, + "availableInstances": { + "description": "Number of available MCIO instances.\n", + "type": "integer" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } }, - "zoneId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources or references to Storage MCIOs. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" }, - "vnfcCpInfo": { - "description": "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.\n", - "type": "array", - "items": { + "_links": { + "description": "Links to resources related to this resource.\n", "type": "object", "required": [ - "id", - "cpdId" + "self" ], "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. See note 3.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } + } + }, + "indicators": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } + } + }, + "instantiate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" ], "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } + } + }, + "terminate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + }, + "scale": { + "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", "required": [ - "type" + "href" ], "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "href": { + "description": "String formatted according to IETF RFC 3986.\n", "type": "string" } - } } - } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "parentCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceInfo” structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "vnfVirtualLinkResourceInfo": { - "description": "Information about the virtualised network resources used by the VLs of the VNF instance. See note 6.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires including\n a related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the\n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "scaleToLevel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "zoneId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "changeFlavour": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "heal": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" + "operate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" + "changeExtConn": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "createSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", + "required": [ + "href" + ], "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } } + }, + "revertToSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } } }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } + "changeCurrentVnfPkg": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - }, - "vipCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } } } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "virtualStorageResourceInfo": { - "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence\n notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "storageResource": { + } + }, + "vnfcSnapshots": { + "description": "Information about VNFC snapshots constituting this VNF snapshot.\n", + "type": "array", + "items": { + "description": "This type represents a VNFC snapshot.\nNOTE 1:\tThe identifier of the compute snapshot resource is assigned during creation of a VNFC snapshot \n being returned from the VIM as output data in the response message of the individual resource \n operations. This attribute shall only be present for a VNFC snapshot that has been newly created \n by the VNFM as a result of the \"Create VNF snapshot task\".\nNOTE 2:\tThe identifier of the storage snapshot resource is assigned during creation of a VNFC snapshot being \n returned from the VIM as output data in the response message of the individual resource operations. \n This attribute shall only be present for a VNFC snapshot with an associated storage resource and that \n has been newly created by the VNFM as a result of the \"Create VNF snapshot task\".\n", + "type": "object", "required": [ - "resourceId" + "id", + "vnfcInstanceId", + "triggeredAt", + "vnfcResourceId" ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "id": { + "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", + "type": "string" }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "vnfcInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + }, + "computeSnapshotResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } } - } }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" + "storageSnapshotResources": { + "description": "Mapping of the storage resources associated to the VNFC with the storage snapshot resources.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "storageResourceId" + ], + "properties": { + "storageResourceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "storageSnapshotResource": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } - }, - "zoneId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } } }, - "mcioInfo": { - "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", - "type": "array", - "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes®, the type of MCIO corresponds to the \n “kind” property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes® instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes® instance, the mcioName is the name \n field of the resource object. \n", + "vnfStateSnapshotInfo": { + "description": "This type represents information about VNF-specific state snapshot data.\n", "type": "object", "required": [ - "mcioId", - "mcioName", - "mcioNamespace", - "vduId", - "cismId", - "mcioType", - "desiredInstances", - "availableInstances" + "checksum", + "isEncrypted" ], "properties": { - "mcioId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "mcioName": { - "description": "Human readable name of this MCIO. See note 4.\n", - "type": "string" - }, - "mcioNamespace": { - "description": "Namespace of this MCIO.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cismId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "mcioType": { - "description": "The type of MCIO. Specific values, their semantics and associated MCIO types are defined in clause 5.5.4.9. Additional values are also permitted. See note 1.\n", - "type": "string", - "enum": [ - "Deployment", - "StatefulSet" - ] - }, - "desiredInstances": { - "description": "Number of desired MCIO instances.\n", - "type": "integer" + "checksum": { + "description": "Cheksum description\n", + "type": "string" }, - "availableInstances": { - "description": "Number of available MCIO instances.\n", - "type": "integer" + "isEncrypted": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" }, - "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" + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": [ - "self" - ], - "properties": { - "self": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "indicators": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "instantiate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "terminate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "scale": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "scaleToLevel": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "changeFlavour": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "heal": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "operate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "changeExtConn": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "createSnapshot": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } }, - "revertToSnapshot": { - "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" - } - } + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" }, - "changeCurrentVnfPkg": { - "description": "This type represents a link to a resource using an absolute URI.\n", + "_links": { + "description": "Links to resources related to this resource.\n", "type": "object", "required": [ - "href" + "self" ], "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - } - } - } - } - }, - "vnfcSnapshots": { - "description": "Information about VNFC snapshots constituting this VNF snapshot.\n", - "type": "array", - "items": { - "description": "This type represents a VNFC snapshot.\nNOTE 1:\tThe identifier of the compute snapshot resource is assigned during creation of a VNFC snapshot \n being returned from the VIM as output data in the response message of the individual resource \n operations. This attribute shall only be present for a VNFC snapshot that has been newly created \n by the VNFM as a result of the \"Create VNF snapshot task\".\nNOTE 2:\tThe identifier of the storage snapshot resource is assigned during creation of a VNFC snapshot being \n returned from the VIM as output data in the response message of the individual resource operations. \n This attribute shall only be present for a VNFC snapshot with an associated storage resource and that \n has been newly created by the VNFM as a result of the \"Create VNF snapshot task\".\n", - "type": "object", - "required": [ - "id", - "vnfcInstanceId", - "triggeredAt", - "vnfcResourceId" - ], - "properties": { - "id": { - "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", - "type": "string" - }, - "vnfcInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "creationStartedAt": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "creationFinishedAt": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "vnfcResourceInfoId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "computeSnapshotResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } }, - "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" + "vnfStateSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "storageSnapshotResources": { - "description": "Mapping of the storage resources associated to the VNFC with the storage snapshot resources.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "storageResourceId" - ], - "properties": { - "storageResourceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "storageSnapshotResource": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "userDefinedData": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "vnfStateSnapshotInfo": { - "description": "This type represents information about VNF-specific state snapshot data.\n", - "type": "object", - "required": [ - "checksum", - "isEncrypted" - ], - "properties": { - "checksum": { - "description": "Cheksum description\n", - "type": "string" - }, - "isEncrypted": { - "description": "The Boolean is a data type having two values (true and false).\n", - "type": "boolean" - }, - "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" - } - } - }, - "userDefinedData": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": [ - "self" - ], - "properties": { - "self": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "vnfStateSnapshot": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" } - } - } } } - } - } } } \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json index 8b780342..5524fd55 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json @@ -3,7 +3,10 @@ "items": { "description": "This type represents an \"Individual VNF snapshot\" resource.\n", "type": "object", - "required": ["id", "_links"], + "required": [ + "id", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -103,7 +106,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -134,7 +139,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -165,7 +172,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -193,12 +202,19 @@ "instantiationState": { "description": "The instantiation state of the VNF. Permitted values: - NOT_INSTANTIATED: The VNF instance is terminated or not instantiated. - INSTANTIATED: The VNF instance is instantiated.\n", "type": "string", - "enum": ["NOT_INSTANTIATED", "INSTANTIATED"] + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] }, "instantiatedVnfInfo": { "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", "type": "object", - "required": ["flavourId", "vnfState", "extCpInfo"], + "required": [ + "flavourId", + "vnfState", + "extCpInfo" + ], "properties": { "flavourId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -207,7 +223,10 @@ "vnfState": { "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", "type": "string", - "enum": ["STARTED", "STOPPED"] + "enum": [ + "STARTED", + "STOPPED" + ] }, "scaleStatus": { "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", @@ -215,7 +234,10 @@ "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", "type": "object", - "required": ["aspectId", "scaleLevel"], + "required": [ + "aspectId", + "scaleLevel" + ], "properties": { "aspectId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -238,7 +260,10 @@ "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", "type": "object", - "required": ["aspectId", "scaleLevel"], + "required": [ + "aspectId", + "scaleLevel" + ], "properties": { "aspectId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -270,13 +295,19 @@ ], "oneOf": [ { - "required": ["associatedVnfcCpId"] + "required": [ + "associatedVnfcCpId" + ] }, { - "required": ["associatedVipCpId"] + "required": [ + "associatedVipCpId" + ] }, { - "required": ["associatedVnfVirtualLinkId"] + "required": [ + "associatedVnfVirtualLinkId" + ] } ], "properties": { @@ -302,7 +333,9 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", @@ -317,18 +350,26 @@ "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -346,12 +387,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -398,12 +444,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -461,7 +512,10 @@ "items": { "description": "This type provides information related to virtual IP (VIP) CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", - "required": ["cpInstanceId", "cpdId"], + "required": [ + "cpInstanceId", + "cpdId" + ], "properties": { "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -485,7 +539,9 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", @@ -500,18 +556,26 @@ "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -529,12 +593,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -581,12 +650,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -643,7 +717,9 @@ "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -697,7 +773,9 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", @@ -712,18 +790,26 @@ "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -741,12 +827,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -793,12 +884,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -829,7 +925,9 @@ "items": { "description": "This type provides additional service information of the virtual CP instance used to expose properties of the virtual CP to NFV-MANO.\nNOTE: This attribute shall only be present if additional information is needed to identify the service \n termination within the VNF, such as for example a URL path information in an HTTP request required \n to allow a single virtual CP IP address to be used for several HTTP based services that use the \n same port number.\n", "type": "object", - "required": ["portInfo"], + "required": [ + "portInfo" + ], "properties": { "portInfo": { "description": "Service port numbers exposed by the virtual CP instance.\n", @@ -851,7 +949,11 @@ "protocol": { "description": "The L4 protocol for this port exposed by the virtual CP instance.\nPermitted values: - TCP - UDP - SCTP\n", "type": "string", - "enum": ["TCP", "UDP", "SCTP"] + "enum": [ + "TCP", + "UDP", + "SCTP" + ] }, "port": { "description": "The L4 port number exposed by the virtual CP instance.\n", @@ -895,7 +997,9 @@ "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -945,14 +1049,19 @@ "items": { "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1017,7 +1126,9 @@ "items": { "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", "type": "object", - "required": ["cpdId"], + "required": [ + "cpdId" + ], "properties": { "cpdId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -1030,13 +1141,19 @@ "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { - "required": ["linkPortId"] + "required": [ + "linkPortId" + ] }, { - "required": ["cpProtocolData"] + "required": [ + "cpProtocolData" + ] }, { - "required": ["netAttDefResourceId"] + "required": [ + "netAttDefResourceId" + ] } ], "type": "object", @@ -1067,7 +1184,9 @@ "items": { "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", @@ -1082,15 +1201,21 @@ "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["fixedAddresses"] + "required": [ + "fixedAddresses" + ] }, { "required": [ @@ -1098,7 +1223,9 @@ ] }, { - "required": ["ipAddressRange"] + "required": [ + "ipAddressRange" + ] } ], "properties": { @@ -1110,7 +1237,10 @@ "segmentationType": { "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", - "enum": ["VLAN", "INHERIT"] + "enum": [ + "VLAN", + "INHERIT" + ] }, "segmentationId": { "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", @@ -1121,12 +1251,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "fixedAddresses": { "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -1173,12 +1308,17 @@ "virtualCpAddress": { "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -1216,7 +1356,9 @@ "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1306,7 +1448,9 @@ "type": "string" }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1356,14 +1500,19 @@ "items": { "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1414,7 +1563,10 @@ "cpInstanceType": { "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", "type": "string", - "enum": ["VNFC_CP", "EXT_CP"] + "enum": [ + "VNFC_CP", + "EXT_CP" + ] }, "vipCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1443,7 +1595,9 @@ "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1518,7 +1672,10 @@ "type": "array", "items": { "type": "object", - "required": ["id", "performanceMetric"], + "required": [ + "id", + "performanceMetric" + ], "properties": { "id": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -1549,7 +1706,11 @@ "items": { "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases.\nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", - "required": ["id", "vduId", "computeResource"], + "required": [ + "id", + "vduId", + "computeResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1564,7 +1725,9 @@ "type": "string" }, "computeResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1629,7 +1792,10 @@ "type": "array", "items": { "type": "object", - "required": ["id", "cpdId"], + "required": [ + "id", + "cpdId" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1649,7 +1815,9 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", @@ -1664,18 +1832,26 @@ "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -1693,12 +1869,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -1745,12 +1926,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -1821,7 +2007,9 @@ "type": "string" }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1879,14 +2067,19 @@ "items": { "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1937,7 +2130,10 @@ "cpInstanceType": { "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", "type": "string", - "enum": ["VNFC_CP", "EXT_CP"] + "enum": [ + "VNFC_CP", + "EXT_CP" + ] }, "vipCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1982,7 +2178,9 @@ "type": "string" }, "storageResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -2081,7 +2279,10 @@ "mcioType": { "description": "The type of MCIO. Specific values, their semantics and associated MCIO types are defined in clause 5.5.4.9. Additional values are also permitted. See note 1.\n", "type": "string", - "enum": ["Deployment", "StatefulSet"] + "enum": [ + "Deployment", + "StatefulSet" + ] }, "desiredInstances": { "description": "Number of desired MCIO instances.\n", @@ -2111,12 +2312,16 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2127,7 +2332,9 @@ "indicators": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2138,7 +2345,9 @@ "instantiate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2149,7 +2358,9 @@ "terminate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2160,7 +2371,9 @@ "scale": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2171,7 +2384,9 @@ "scaleToLevel": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2182,7 +2397,9 @@ "changeFlavour": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2193,7 +2410,9 @@ "heal": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2204,7 +2423,9 @@ "operate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2215,7 +2436,9 @@ "changeExtConn": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2226,7 +2449,9 @@ "createSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2237,7 +2462,9 @@ "revertToSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2248,7 +2475,9 @@ "changeCurrentVnfPkg": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2296,7 +2525,9 @@ "type": "string" }, "computeSnapshotResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -2345,7 +2576,9 @@ "type": "array", "items": { "type": "object", - "required": ["storageResourceId"], + "required": [ + "storageResourceId" + ], "properties": { "storageResourceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -2368,7 +2601,10 @@ "vnfStateSnapshotInfo": { "description": "This type represents information about VNF-specific state snapshot data.\n", "type": "object", - "required": ["checksum", "isEncrypted"], + "required": [ + "checksum", + "isEncrypted" + ], "properties": { "checksum": { "description": "Cheksum description\n", @@ -2391,12 +2627,16 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2407,7 +2647,9 @@ "vnfStateSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2422,12 +2664,16 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2438,7 +2684,9 @@ "takenFrom": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json index 595f0c9f..720b7174 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json @@ -3,7 +3,12 @@ "items": { "description": "This type represents a subscription related to notifications about VNF lifecycle changes.\n", "type": "object", - "required": ["id", "callbackUri", "verbosity", "_links"], + "required": [ + "id", + "callbackUri", + "verbosity", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -20,20 +25,28 @@ { "oneOf": [ { - "required": ["vnfdId"] + "required": [ + "vnfdId" + ] }, { - "required": ["vnfProductsFromProviders"] + "required": [ + "vnfProductsFromProviders" + ] } ] }, { "oneOf": [ { - "required": ["vnfInstanceIds"] + "required": [ + "vnfInstanceIds" + ] }, { - "required": ["vnfInstanceNames"] + "required": [ + "vnfInstanceNames" + ] } ] } @@ -52,7 +65,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProvider"], + "required": [ + "vnfProvider" + ], "properties": { "vnfProvider": { "description": "Name of the VNF provider to match.\n", @@ -63,7 +78,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProductName"], + "required": [ + "vnfProductName" + ], "properties": { "vnfProductName": { "description": "Name of the VNF product to match.\n", @@ -74,7 +91,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfSoftwareVersion"], + "required": [ + "vnfSoftwareVersion" + ], "properties": { "vnfSoftwareVersion": { "description": "A version.\n", @@ -174,17 +193,24 @@ "verbosity": { "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", "type": "string", - "enum": ["FULL", "SHORT"] + "enum": [ + "FULL", + "SHORT" + ] }, "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -196,4 +222,4 @@ } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfIdentifierDeletionNotification.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfIdentifierDeletionNotification.schema.json index 50f5d52d..a1d38176 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfIdentifierDeletionNotification.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfIdentifierDeletionNotification.schema.json @@ -17,7 +17,9 @@ "notificationType": { "description": "Discriminator for the different notification types. Shall be set to \"VnfIdentifierDeletionNotification\" for this notification type.\n", "type": "string", - "enum": ["VnfIdentifierDeletionNotification"] + "enum": [ + "VnfIdentifierDeletionNotification" + ] }, "subscriptionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -35,12 +37,17 @@ "_links": { "description": "This type represents the links to resources that a notification can contain.\n", "type": "object", - "required": ["vnfInstance", "subscription"], + "required": [ + "vnfInstance", + "subscription" + ], "properties": { "vnfInstance": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -51,7 +58,9 @@ "subscription": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -62,7 +71,9 @@ "vnfLcmOpOcc": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index 4a77983c..497c3506 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -2547,7 +2547,7 @@ "certificateContentId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - } + } } } }, -- GitLab From feccb93ea1c08d01a522298a07a08f061d589e1c Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 10 Dec 2024 16:14:17 +0500 Subject: [PATCH 083/141] update response body schemas as per SOL 003 version 5.1.1 --- .../schemas/LccnSubscription.schema.json | 5 +- .../schemas/LccnSubscriptions.schema.json | 5 +- .../schemas/Subscription.schema.json | 5 +- .../schemas/VnfLcmOpOcc.schema.json | 115 ++- .../schemas/VnfLcmOpOccs.schema.json | 115 ++- ...perationOccurrenceNotification.schema.json | 111 ++- .../schemas/VnfSnapshotInfo.schema.json | 832 +++++++++++++++--- .../VnfSnapshotInfoModifications.schema.json | 832 +++++++++++++++--- .../schemas/VnfSnapshotsInfo.schema.json | 832 +++++++++++++++--- .../schemas/subscriptions.schema.json | 5 +- .../schemas/vnfInstance.schema.json | 464 +++++++--- .../schemas/vnfInstances.schema.json | 464 +++++++--- 12 files changed, 3088 insertions(+), 697 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json index 7a580655..4f1ec74e 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json @@ -147,7 +147,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -161,7 +161,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] } }, diff --git a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json index 720b7174..478f98f4 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json @@ -149,7 +149,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -163,7 +163,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] } }, diff --git a/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json index 7a580655..4f1ec74e 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json @@ -147,7 +147,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -161,7 +161,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] } }, diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json index 196372c2..21a6788d 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json @@ -21,8 +21,7 @@ "vnfInstanceId", "operation", "isAutomaticInvocation", - "isCancelPending", - "_links" + "isCancelPending" ], "properties": { "id": { @@ -61,7 +60,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -84,7 +83,7 @@ "type": "boolean" }, "operationParams": { - "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. \nThe following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n", + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. \nThe following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest * SELECT_DEPL_MODS: SelectVnfDeployableModulesRequest\n", "type": "object" }, "isCancelPending": { @@ -175,7 +174,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -298,7 +297,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -341,7 +340,7 @@ } }, "vnfLinkPortIds": { - "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references a \"VnfLinkPortInfo\" structure.\nShall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related \"VnfLinkPortInfo\" structures are present (case \"added\") or have been present (case \"removed\") in the \"VnfVirtualLinkResourceInfo\" or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResource¬Info\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. See note 1.\n", + "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references a \"VnfLinkPortInfo\" structure.\nShall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related \"VnfLinkPortInfo\" structures are present (case \"added\") or have been present (case \"removed\") in the \"VnfVirtualLinkResourceInfo\" or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResource┬¼Info\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. See note 1.\n", "type": "array", "items": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -398,7 +397,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -487,7 +486,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -574,7 +573,7 @@ "description": "If present, this attribute signals modifications the \"vimConnectionInfo\" attribute array in \"VnfInstance\".\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -585,7 +584,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -682,7 +681,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -744,7 +743,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -805,7 +804,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for \n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only \n required to configure one cpConfig per cpdId, not per VNFC instance. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version.\n", "type": "object", "required": [ "cpdId" @@ -816,10 +815,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -852,7 +851,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceData” structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -878,7 +877,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI’s transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -892,23 +891,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -916,7 +898,7 @@ "format": "MAC" }, "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values:\n -\tVLAN: the subport uses VLAN as encapsulation type.\n -\tINHERIT: the subport gets its segmentation type from the network it's connected to.\nThis attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", "enum": [ "VLAN", @@ -935,6 +917,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -987,7 +986,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes┬« that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", "type": "object", "required": [ "type" @@ -1006,9 +1005,37 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } } } } @@ -1041,7 +1068,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1142,10 +1169,10 @@ "type": "string" }, "vimConnectionInfo": { - "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", + "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -1156,7 +1183,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -1225,7 +1252,7 @@ "format": "date-time" }, "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", + "description": "The endpoint type used by this coordination action. Valid values: ΓÇó\tMGMT: coordination with other operation supporting management systems (e.g. EM) ΓÇó\tVNF: coordination with the VNF instance\n", "type": "string", "enum": [ "MGMT", @@ -1262,7 +1289,7 @@ "format": "date-time" }, "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", + "description": "The endpoint type used by this coordination action. Valid values: ΓÇó\tMGMT: coordination with other operation supporting management systems (e.g. EM) ΓÇó\tVNF: coordination with the VNF instance\n", "type": "string", "enum": [ "MGMT", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json index aa30499e..ce20e18b 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json @@ -23,8 +23,7 @@ "vnfInstanceId", "operation", "isAutomaticInvocation", - "isCancelPending", - "_links" + "isCancelPending" ], "properties": { "id": { @@ -63,7 +62,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -86,7 +85,7 @@ "type": "boolean" }, "operationParams": { - "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. \nThe following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n", + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. \nThe following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest * SELECT_DEPL_MODS: SelectVnfDeployableModulesRequest\n", "type": "object" }, "isCancelPending": { @@ -177,7 +176,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -300,7 +299,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -343,7 +342,7 @@ } }, "vnfLinkPortIds": { - "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references a \"VnfLinkPortInfo\" structure.\nShall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related \"VnfLinkPortInfo\" structures are present (case \"added\") or have been present (case \"removed\") in the \"VnfVirtualLinkResourceInfo\" or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResource¬Info\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. See note 1.\n", + "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references a \"VnfLinkPortInfo\" structure.\nShall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related \"VnfLinkPortInfo\" structures are present (case \"added\") or have been present (case \"removed\") in the \"VnfVirtualLinkResourceInfo\" or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResource┬¼Info\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. See note 1.\n", "type": "array", "items": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -400,7 +399,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -489,7 +488,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -576,7 +575,7 @@ "description": "If present, this attribute signals modifications the \"vimConnectionInfo\" attribute array in \"VnfInstance\".\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -587,7 +586,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -684,7 +683,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -746,7 +745,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -807,7 +806,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for \n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only \n required to configure one cpConfig per cpdId, not per VNFC instance. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version.\n", "type": "object", "required": [ "cpdId" @@ -818,10 +817,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -854,7 +853,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceData” structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -880,7 +879,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI’s transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -894,23 +893,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -918,7 +900,7 @@ "format": "MAC" }, "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values:\n -\tVLAN: the subport uses VLAN as encapsulation type.\n -\tINHERIT: the subport gets its segmentation type from the network it's connected to.\nThis attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", "enum": [ "VLAN", @@ -937,6 +919,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -989,7 +988,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes┬« that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", "type": "object", "required": [ "type" @@ -1008,9 +1007,37 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } } } } @@ -1043,7 +1070,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1144,10 +1171,10 @@ "type": "string" }, "vimConnectionInfo": { - "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", + "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -1158,7 +1185,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -1227,7 +1254,7 @@ "format": "date-time" }, "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", + "description": "The endpoint type used by this coordination action. Valid values: ΓÇó\tMGMT: coordination with other operation supporting management systems (e.g. EM) ΓÇó\tVNF: coordination with the VNF instance\n", "type": "string", "enum": [ "MGMT", @@ -1264,7 +1291,7 @@ "format": "date-time" }, "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", + "description": "The endpoint type used by this coordination action. Valid values: ΓÇó\tMGMT: coordination with other operation supporting management systems (e.g. EM) ΓÇó\tVNF: coordination with the VNF instance\n", "type": "string", "enum": [ "MGMT", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index 1fb2c92b..8fc9ea91 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF lifecycle management operation occurrence notification, which informs the receiver of changes in the VNF lifecycle caused by a VNF LCM operation occurrence.\nThe support of the notification is mandatory. \nThis 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\" \n method on the \"Individual VNF instance\" resource\n- Creation of a VNF snapshot - Reversion of the VNF instance to a VNF snapshot\nClause 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.\nNOTE 1:\tShall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" \n and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains \n information about the cumulative changes to virtualised resources that were performed so far by the VNF LCM \n operation occurrence and by any of the error handling procedures for that operation occurrence.\nNOTE 2:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed for signalling \n the different types of changes, i.e. one per virtual link and change type. For instance, in the case of signaling \n affected VL instances involving the addition of a particular VL instance with links ports, one \"AffectedVirtualLink\" \n entry signals the addition of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \n \"ADDED\", and another \"AffectedVirtualLink\" entry signals the addition of externally visible VNF link ports of the VL \n by using the \"changeType\" equal to \"LINK_PORT_ADDED\".\nNote 3: Not more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present.\n", + "description": "This type represents a VNF lifecycle management operation occurrence notification, which informs the receiver of changes in the VNF lifecycle caused by a VNF LCM operation occurrence.\nThe support of the notification is mandatory. \nThis 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 - Selection of deployable modules of the VNF instance - Termination of the VNF instance - Modification of VNF instance information and/or VNF configurable properties through the \"PATCH\" \n method on the \"Individual VNF instance\" resource\n- Creation of a VNF snapshot - Reversion of the VNF instance to a VNF snapshot\nClause 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.\nNOTE 1:\tShall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" \n and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains \n information about the cumulative changes to virtualised resources that were performed so far by the VNF LCM \n operation occurrence and by any of the error handling procedures for that operation occurrence.\nNOTE 2:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed for signalling \n the different types of changes, i.e. one per virtual link and change type. For instance, in the case of signaling \n affected VL instances involving the addition of a particular VL instance with links ports, one \"AffectedVirtualLink\" \n entry signals the addition of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \n \"ADDED\", and another \"AffectedVirtualLink\" entry signals the addition of externally visible VNF link ports of the VL \n by using the \"changeType\" equal to \"LINK_PORT_ADDED\".\nNote 3: Not more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present.\n", "type": "object", "required": [ "id", @@ -61,7 +61,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -75,7 +75,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] }, "isAutomaticInvocation": { @@ -134,7 +135,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -257,7 +258,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -300,7 +301,7 @@ } }, "vnfLinkPortIds": { - "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references a \"VnfLinkPortInfo\" structure.\nShall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related \"VnfLinkPortInfo\" structures are present (case \"added\") or have been present (case \"removed\") in the \"VnfVirtualLinkResourceInfo\" or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResource¬Info\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. See note 1.\n", + "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references a \"VnfLinkPortInfo\" structure.\nShall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related \"VnfLinkPortInfo\" structures are present (case \"added\") or have been present (case \"removed\") in the \"VnfVirtualLinkResourceInfo\" or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResource┬¼Info\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. See note 1.\n", "type": "array", "items": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -357,7 +358,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -446,7 +447,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -531,7 +532,7 @@ "description": "If present, this attribute signals modifications the \"vimConnectionInfo\" attribute array in \"VnfInstance\".\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -542,7 +543,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -718,7 +719,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -780,7 +781,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -841,7 +842,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for \n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only \n required to configure one cpConfig per cpdId, not per VNFC instance. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version.\n", "type": "object", "required": [ "cpdId" @@ -852,10 +853,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -888,7 +889,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceData” structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -914,7 +915,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI’s transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -928,23 +929,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -952,7 +936,7 @@ "format": "MAC" }, "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values:\n -\tVLAN: the subport uses VLAN as encapsulation type.\n -\tINHERIT: the subport gets its segmentation type from the network it's connected to.\nThis attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", "enum": [ "VLAN", @@ -971,6 +955,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1023,7 +1024,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes┬« that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", "type": "object", "required": [ "type" @@ -1042,9 +1043,37 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } } } } @@ -1077,7 +1106,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1178,10 +1207,10 @@ "type": "string" }, "vimConnectionInfo": { - "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", + "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -1192,7 +1221,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json index 34ab7ce1..3b8b3ae2 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json @@ -49,7 +49,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n data types (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -102,7 +102,7 @@ "description": "Information about VIM or CISM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if - the resources of at least of the VNFCs are managed by a VIM and VNF-related resource management in direct mode is applicable. - the resources of at least of the VNFCs are managed by a CISM. This attribute can be modified with the PATCH method. If VIM connection information is provisioned to the VNFM by means outside the scope of the present document, the information in the \"vimConnectionInfo\" attribute provides necessary information for binding the VnfInstance representing the \"Individual VNF instance\" to the applicable VIM connection information used to perform resource management for the VNF instance. See also the definition of the \"VimConnectionInfo\" in clause 4.4.1.6.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -113,7 +113,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -135,7 +135,7 @@ "description": "Information about the CIR connection for managing OS container images for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -146,7 +146,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -168,7 +168,7 @@ "description": "Information about the MCIOP repository for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise. See note 1.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -179,7 +179,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -197,6 +197,283 @@ } } }, + "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": "Information for certificate profile.", + "type": "array", + "items": { + "description": "NOTE: At least one overriding attributes shall be present, otherwise shall be absent.\nThis type provides input information to override certificate base profile for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "issuer": { + "description": "Issuer of certificates. See note.", + "type": "string" + }, + "issuerUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subject": { + "description": "This type provides input information related to the subject of the certificate.\nNOTE: At least one overriding attributes shall be present, otherwise shall be absent.\n", + "type": "object", + "properties": { + "commonName": { + "description": "Information of the certification target subject FQDN. Can be set empty when this certificate is used for encrypted communication using IP address. See note.\n", + "type": "string" + }, + "organization": { + "description": "Information of the certification target subject Organization. See note.", + "type": "string" + }, + "country": { + "description": "Information of the certification target subject Country. See note.", + "type": "string" + }, + "state": { + "description": "Information of the certification target subject State. See note.", + "type": "string" + }, + "locality": { + "description": "Information of the certification target subject Locality. See note.", + "type": "string" + }, + "emailAddress": { + "description": "Information of the certification contact email address. See note.", + "type": "string" + } + } + }, + "subjectUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "basicConstraints": { + "description": "Basic constraints of certificates. See note.", + "type": "string" + }, + "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 [14], clause 7.1.19.4). See note.\n", + "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.", + "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": "number" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.", + "type": "string" + }, + "minimumKeyLength": { + "description": "Minimum key length for certificates.", + "type": "number" + } + } + } + }, + "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", + "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" + } + } + } + } + }, + "supportedProtocol": { + "description": "Supported protocols by CMF instance.", + "type": "array", + "items": { + "description": "Supported protocol by CMF instance.", + "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.\nNOTE: The CertificateDesc data type is defined in clause 7.1.19.2 of ETSI GS NFV IFA 011 [10].\n", + "type": "object", + "required": [ + "id", + "certificateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateDescId": { + "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. Permitted values: - NOT_INSTANTIATED: The VNF instance is terminated or not instantiated. - INSTANTIATED: The VNF instance is instantiated.\n", "type": "string", @@ -210,8 +487,7 @@ "type": "object", "required": [ "flavourId", - "vnfState", - "extCpInfo" + "vnfState" ], "properties": { "flavourId": { @@ -227,7 +503,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.\nThis attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\nFor 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", @@ -278,12 +554,232 @@ } } }, + "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" + } + }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes.\nThe tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request.\nAt most one tag can be included when the data type is used in a VNF LCM operation request.\nWhen the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.\n", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "type": { + "description": "Type of the resource definition referenced.\n", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" + ] + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute 'type' indicates OSCONTAINER and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource. See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note.\n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resource property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD (clause 6.2.7.2 in ETSI GS NFV-SOL 001 [14]) for this virtual compute descriptor. The value is a numberthat indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD (clause 6.2.7.2 in ETSI GS NFV-SOL 001 [14]) that indicates the valid vaues for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource.\n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", - "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n “extLinkPorts” attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -344,7 +840,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -358,18 +854,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -388,6 +872,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -493,12 +989,16 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceInfo” structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -550,7 +1050,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -564,18 +1064,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -594,6 +1082,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -675,7 +1175,7 @@ } }, "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the VIP CP instance. See note.\n", + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -697,7 +1197,7 @@ "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular Virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\nNOTE 2: The information can be omitted because it is already available as part of the external CP information in the \n VnfExtCpInfo structure.\n", "type": "object", "required": [ "cpInstanceId", @@ -719,7 +1219,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -766,7 +1266,7 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", "type": "array", "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", @@ -784,7 +1284,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -798,18 +1298,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -828,6 +1316,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -909,7 +1409,7 @@ } }, "vduIds": { - "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note.\n", + "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note 1.\n", "type": "array", "minItems": 1, "items": { @@ -999,7 +1499,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1061,7 +1561,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1122,7 +1622,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for \n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only \n required to configure one cpConfig per cpdId, not per VNFC instance. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version.\n", "type": "object", "required": [ "cpdId" @@ -1133,10 +1633,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1169,7 +1669,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceData” structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1195,7 +1695,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI’s transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1209,23 +1709,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1233,7 +1716,7 @@ "format": "MAC" }, "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values:\n -\tVLAN: the subport uses VLAN as encapsulation type.\n -\tINHERIT: the subport gets its segmentation type from the network it's connected to.\nThis attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", "enum": [ "VLAN", @@ -1252,6 +1735,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1304,7 +1804,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes┬« that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", "type": "object", "required": [ "type" @@ -1323,9 +1823,37 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } } } } @@ -1358,7 +1886,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1450,7 +1978,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1512,7 +2040,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1597,7 +2125,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1669,6 +2197,7 @@ "description": "Active monitoring parameters.\n", "type": "array", "items": { + "description": "This type represents a monitoring parameter that is tracked by the VNFM,\n", "type": "object", "required": [ "id", @@ -1702,7 +2231,7 @@ "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", "type": "array", "items": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases.\nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. \nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", "type": "object", "required": [ "id", @@ -1727,7 +2256,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1786,7 +2315,7 @@ "type": "string" }, "vnfcCpInfo": { - "description": "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.\n", + "description": "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. See note 7.\n", "type": "array", "items": { "type": "object", @@ -1826,7 +2355,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1840,18 +2369,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1870,6 +2387,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1959,7 +2488,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceInfo” structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1969,6 +2498,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" } } } @@ -1976,6 +2509,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" } } } @@ -2009,7 +2546,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2079,7 +2616,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2180,7 +2717,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2241,7 +2778,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes®, the type of MCIO corresponds to the \n “kind” property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes® instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes® instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", @@ -2279,7 +2816,8 @@ "type": "string", "enum": [ "Deployment", - "StatefulSet" + "Statefulset", + "DaemonSet" ] }, "desiredInstances": { @@ -2290,6 +2828,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 input 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.", + "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" @@ -2527,7 +3135,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json index 866ff1c9..5bb09931 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json @@ -41,7 +41,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n data types (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -94,7 +94,7 @@ "description": "Information about VIM or CISM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if - the resources of at least of the VNFCs are managed by a VIM and VNF-related resource management in direct mode is applicable. - the resources of at least of the VNFCs are managed by a CISM. This attribute can be modified with the PATCH method. If VIM connection information is provisioned to the VNFM by means outside the scope of the present document, the information in the \"vimConnectionInfo\" attribute provides necessary information for binding the VnfInstance representing the \"Individual VNF instance\" to the applicable VIM connection information used to perform resource management for the VNF instance. See also the definition of the \"VimConnectionInfo\" in clause 4.4.1.6.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -105,7 +105,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -127,7 +127,7 @@ "description": "Information about the CIR connection for managing OS container images for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -138,7 +138,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -160,7 +160,7 @@ "description": "Information about the MCIOP repository for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise. See note 1.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -171,7 +171,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -189,6 +189,283 @@ } } }, + "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": "Information for certificate profile.", + "type": "array", + "items": { + "description": "NOTE: At least one overriding attributes shall be present, otherwise shall be absent.\nThis type provides input information to override certificate base profile for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "issuer": { + "description": "Issuer of certificates. See note.", + "type": "string" + }, + "issuerUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subject": { + "description": "This type provides input information related to the subject of the certificate.\nNOTE: At least one overriding attributes shall be present, otherwise shall be absent.\n", + "type": "object", + "properties": { + "commonName": { + "description": "Information of the certification target subject FQDN. Can be set empty when this certificate is used for encrypted communication using IP address. See note.\n", + "type": "string" + }, + "organization": { + "description": "Information of the certification target subject Organization. See note.", + "type": "string" + }, + "country": { + "description": "Information of the certification target subject Country. See note.", + "type": "string" + }, + "state": { + "description": "Information of the certification target subject State. See note.", + "type": "string" + }, + "locality": { + "description": "Information of the certification target subject Locality. See note.", + "type": "string" + }, + "emailAddress": { + "description": "Information of the certification contact email address. See note.", + "type": "string" + } + } + }, + "subjectUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "basicConstraints": { + "description": "Basic constraints of certificates. See note.", + "type": "string" + }, + "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 [14], clause 7.1.19.4). See note.\n", + "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.", + "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": "number" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.", + "type": "string" + }, + "minimumKeyLength": { + "description": "Minimum key length for certificates.", + "type": "number" + } + } + } + }, + "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", + "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" + } + } + } + } + }, + "supportedProtocol": { + "description": "Supported protocols by CMF instance.", + "type": "array", + "items": { + "description": "Supported protocol by CMF instance.", + "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.\nNOTE: The CertificateDesc data type is defined in clause 7.1.19.2 of ETSI GS NFV IFA 011 [10].\n", + "type": "object", + "required": [ + "id", + "certificateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateDescId": { + "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. Permitted values: - NOT_INSTANTIATED: The VNF instance is terminated or not instantiated. - INSTANTIATED: The VNF instance is instantiated.\n", "type": "string", @@ -202,8 +479,7 @@ "type": "object", "required": [ "flavourId", - "vnfState", - "extCpInfo" + "vnfState" ], "properties": { "flavourId": { @@ -219,7 +495,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.\nThis attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\nFor 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", @@ -270,12 +546,232 @@ } } }, + "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" + } + }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes.\nThe tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request.\nAt most one tag can be included when the data type is used in a VNF LCM operation request.\nWhen the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.\n", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "type": { + "description": "Type of the resource definition referenced.\n", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" + ] + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute 'type' indicates OSCONTAINER and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource. See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note.\n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resource property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD (clause 6.2.7.2 in ETSI GS NFV-SOL 001 [14]) for this virtual compute descriptor. The value is a numberthat indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD (clause 6.2.7.2 in ETSI GS NFV-SOL 001 [14]) that indicates the valid vaues for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource.\n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", - "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n “extLinkPorts” attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -336,7 +832,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -350,18 +846,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -380,6 +864,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -485,12 +981,16 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceInfo” structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the 'NetAttDefResourceInfo' structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -542,7 +1042,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -556,18 +1056,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -586,6 +1074,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -667,7 +1167,7 @@ } }, "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the VIP CP instance. See note.\n", + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -689,7 +1189,7 @@ "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular Virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\nNOTE 2: The information can be omitted because it is already available as part of the external CP information in the \n VnfExtCpInfo structure.\n", "type": "object", "required": [ "cpInstanceId", @@ -711,7 +1211,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -758,7 +1258,7 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", "type": "array", "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", @@ -776,7 +1276,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -790,18 +1290,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -820,6 +1308,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -901,7 +1401,7 @@ } }, "vduIds": { - "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note.\n", + "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note 1.\n", "type": "array", "minItems": 1, "items": { @@ -991,7 +1491,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1053,7 +1553,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1114,7 +1614,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for \n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only \n required to configure one cpConfig per cpdId, not per VNFC instance. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version.\n", "type": "object", "required": [ "cpdId" @@ -1125,10 +1625,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1161,7 +1661,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceData” structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1187,7 +1687,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI’s transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1201,23 +1701,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1225,7 +1708,7 @@ "format": "MAC" }, "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values:\n -\tVLAN: the subport uses VLAN as encapsulation type.\n -\tINHERIT: the subport gets its segmentation type from the network it's connected to.\nThis attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", "enum": [ "VLAN", @@ -1244,6 +1727,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1296,7 +1796,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes┬« that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", "type": "object", "required": [ "type" @@ -1315,9 +1815,37 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } } } } @@ -1350,7 +1878,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1442,7 +1970,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1504,7 +2032,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1589,7 +2117,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1661,6 +2189,7 @@ "description": "Active monitoring parameters.\n", "type": "array", "items": { + "description": "This type represents a monitoring parameter that is tracked by the VNFM,\n", "type": "object", "required": [ "id", @@ -1694,7 +2223,7 @@ "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", "type": "array", "items": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases.\nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. \nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", "type": "object", "required": [ "id", @@ -1719,7 +2248,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1778,7 +2307,7 @@ "type": "string" }, "vnfcCpInfo": { - "description": "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.\n", + "description": "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. See note 7.\n", "type": "array", "items": { "type": "object", @@ -1818,7 +2347,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1832,18 +2361,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1862,6 +2379,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1951,7 +2480,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceInfo” structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1961,6 +2490,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" } } } @@ -1968,6 +2501,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" } } } @@ -2001,7 +2538,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2071,7 +2608,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2172,7 +2709,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2233,7 +2770,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes®, the type of MCIO corresponds to the \n “kind” property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes® instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes® instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", @@ -2271,7 +2808,8 @@ "type": "string", "enum": [ "Deployment", - "StatefulSet" + "Statefulset", + "DaemonSet" ] }, "desiredInstances": { @@ -2282,6 +2820,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 input 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.", + "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" @@ -2519,7 +3127,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json index 5524fd55..70ac1b3a 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json @@ -51,7 +51,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n data types (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -104,7 +104,7 @@ "description": "Information about VIM or CISM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if - the resources of at least of the VNFCs are managed by a VIM and VNF-related resource management in direct mode is applicable. - the resources of at least of the VNFCs are managed by a CISM. This attribute can be modified with the PATCH method. If VIM connection information is provisioned to the VNFM by means outside the scope of the present document, the information in the \"vimConnectionInfo\" attribute provides necessary information for binding the VnfInstance representing the \"Individual VNF instance\" to the applicable VIM connection information used to perform resource management for the VNF instance. See also the definition of the \"VimConnectionInfo\" in clause 4.4.1.6.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -115,7 +115,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -137,7 +137,7 @@ "description": "Information about the CIR connection for managing OS container images for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -148,7 +148,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -170,7 +170,7 @@ "description": "Information about the MCIOP repository for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise. See note 1.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -181,7 +181,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -199,6 +199,283 @@ } } }, + "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": "Information for certificate profile.", + "type": "array", + "items": { + "description": "NOTE: At least one overriding attributes shall be present, otherwise shall be absent.\nThis type provides input information to override certificate base profile for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "issuer": { + "description": "Issuer of certificates. See note.", + "type": "string" + }, + "issuerUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subject": { + "description": "This type provides input information related to the subject of the certificate.\nNOTE: At least one overriding attributes shall be present, otherwise shall be absent.\n", + "type": "object", + "properties": { + "commonName": { + "description": "Information of the certification target subject FQDN. Can be set empty when this certificate is used for encrypted communication using IP address. See note.\n", + "type": "string" + }, + "organization": { + "description": "Information of the certification target subject Organization. See note.", + "type": "string" + }, + "country": { + "description": "Information of the certification target subject Country. See note.", + "type": "string" + }, + "state": { + "description": "Information of the certification target subject State. See note.", + "type": "string" + }, + "locality": { + "description": "Information of the certification target subject Locality. See note.", + "type": "string" + }, + "emailAddress": { + "description": "Information of the certification contact email address. See note.", + "type": "string" + } + } + }, + "subjectUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "basicConstraints": { + "description": "Basic constraints of certificates. See note.", + "type": "string" + }, + "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 [14], clause 7.1.19.4). See note.\n", + "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.", + "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": "number" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.", + "type": "string" + }, + "minimumKeyLength": { + "description": "Minimum key length for certificates.", + "type": "number" + } + } + } + }, + "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", + "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" + } + } + } + } + }, + "supportedProtocol": { + "description": "Supported protocols by CMF instance.", + "type": "array", + "items": { + "description": "Supported protocol by CMF instance.", + "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.\nNOTE: The CertificateDesc data type is defined in clause 7.1.19.2 of ETSI GS NFV IFA 011 [10].\n", + "type": "object", + "required": [ + "id", + "certificateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateDescId": { + "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. Permitted values: - NOT_INSTANTIATED: The VNF instance is terminated or not instantiated. - INSTANTIATED: The VNF instance is instantiated.\n", "type": "string", @@ -212,8 +489,7 @@ "type": "object", "required": [ "flavourId", - "vnfState", - "extCpInfo" + "vnfState" ], "properties": { "flavourId": { @@ -229,7 +505,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.\nThis attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\nFor 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", @@ -280,12 +556,232 @@ } } }, + "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" + } + }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes.\nThe tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request.\nAt most one tag can be included when the data type is used in a VNF LCM operation request.\nWhen the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.\n", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "type": { + "description": "Type of the resource definition referenced.\n", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" + ] + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute 'type' indicates OSCONTAINER and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource. See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note.\n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resource property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD (clause 6.2.7.2 in ETSI GS NFV-SOL 001 [14]) for this virtual compute descriptor. The value is a numberthat indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD (clause 6.2.7.2 in ETSI GS NFV-SOL 001 [14]) that indicates the valid vaues for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource.\n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", - "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n “extLinkPorts” attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -346,7 +842,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -360,18 +856,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -390,6 +874,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -495,12 +991,16 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceInfo” structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -552,7 +1052,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -566,18 +1066,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -596,6 +1084,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -677,7 +1177,7 @@ } }, "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the VIP CP instance. See note.\n", + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -699,7 +1199,7 @@ "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular Virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\nNOTE 2: The information can be omitted because it is already available as part of the external CP information in the \n VnfExtCpInfo structure.\n", "type": "object", "required": [ "cpInstanceId", @@ -721,7 +1221,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -768,7 +1268,7 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", "type": "array", "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", @@ -786,7 +1286,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -800,18 +1300,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -830,6 +1318,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -911,7 +1411,7 @@ } }, "vduIds": { - "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note.\n", + "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note 1.\n", "type": "array", "minItems": 1, "items": { @@ -1001,7 +1501,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1063,7 +1563,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1124,7 +1624,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for \n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only \n required to configure one cpConfig per cpdId, not per VNFC instance. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version.\n", "type": "object", "required": [ "cpdId" @@ -1135,10 +1635,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1171,7 +1671,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceData” structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1197,7 +1697,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI’s transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1211,23 +1711,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1235,7 +1718,7 @@ "format": "MAC" }, "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values:\n -\tVLAN: the subport uses VLAN as encapsulation type.\n -\tINHERIT: the subport gets its segmentation type from the network it's connected to.\nThis attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", "enum": [ "VLAN", @@ -1254,6 +1737,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1306,7 +1806,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes┬« that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", "type": "object", "required": [ "type" @@ -1325,9 +1825,37 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } } } } @@ -1360,7 +1888,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1452,7 +1980,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1514,7 +2042,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1599,7 +2127,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1671,6 +2199,7 @@ "description": "Active monitoring parameters.\n", "type": "array", "items": { + "description": "This type represents a monitoring parameter that is tracked by the VNFM,\n", "type": "object", "required": [ "id", @@ -1704,7 +2233,7 @@ "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", "type": "array", "items": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases.\nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. \nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", "type": "object", "required": [ "id", @@ -1729,7 +2258,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1788,7 +2317,7 @@ "type": "string" }, "vnfcCpInfo": { - "description": "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.\n", + "description": "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. See note 7.\n", "type": "array", "items": { "type": "object", @@ -1828,7 +2357,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1842,18 +2371,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1872,6 +2389,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1961,7 +2490,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceInfo” structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1971,6 +2500,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" } } } @@ -1978,6 +2511,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" } } } @@ -2011,7 +2548,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2081,7 +2618,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2182,7 +2719,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2243,7 +2780,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes®, the type of MCIO corresponds to the \n “kind” property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes® instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes® instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", @@ -2281,7 +2818,8 @@ "type": "string", "enum": [ "Deployment", - "StatefulSet" + "Statefulset", + "DaemonSet" ] }, "desiredInstances": { @@ -2292,6 +2830,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 input 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.", + "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" @@ -2529,7 +3137,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json index 720b7174..478f98f4 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json @@ -149,7 +149,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -163,7 +163,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] } }, diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index 1e547f42..b5e1046d 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -49,10 +49,10 @@ "type": "object" }, "vimConnectionInfo": { - "description": "Information about VIM or CISM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if - the resources of at least of the VNFCs are managed by a VIM and VNF-related resource management in direct mode is applicable. - the resources of at least of the VNFCs are managed by a CISM. This attribute can be modified with the PATCH method.\n", + "description": "Information about VIM or CISM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if - the resources of at least of the VNFCs are managed by a VIM and VNF-related resource management in direct mode is applicable. - the resources of at least of the VNFCs are managed by a CISM. This attribute can be modified with the PATCH method. If VIM connection information is provisioned to the VNFM by means outside the scope of the present document, the information in the \"vimConnectionInfo\" attribute provides necessary information for binding the VnfInstance representing the \"Individual VNF instance\" to the applicable VIM connection information used to perform resource management for the VNF instance. See also the definition of the \"VimConnectionInfo\" in clause 4.4.1.6.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -63,7 +63,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -85,7 +85,7 @@ "description": "Information about the CIR connection for managing OS container images for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -96,7 +96,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -118,7 +118,7 @@ "description": "Information about the MCIOP repository for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise. See note 1.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -129,7 +129,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -437,8 +437,7 @@ "type": "object", "required": [ "flavourId", - "vnfState", - "extCpInfo" + "vnfState" ], "properties": { "flavourId": { @@ -454,7 +453,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.\nThis attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\nFor 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", @@ -513,12 +512,224 @@ "type": "string" } }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes.\nThe tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request.\nAt most one tag can be included when the data type is used in a VNF LCM operation request.\nWhen the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.\n", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "type": { + "description": "Type of the resource definition referenced.\n", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" + ] + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute 'type' indicates OSCONTAINER and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource. See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note.\n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resource property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD (clause 6.2.7.2 in ETSI GS NFV-SOL 001 [14]) for this virtual compute descriptor. The value is a numberthat indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD (clause 6.2.7.2 in ETSI GS NFV-SOL 001 [14]) that indicates the valid vaues for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource.\n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", - "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n “extLinkPorts” attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -579,7 +790,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -593,18 +804,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -623,6 +822,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -728,7 +939,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceInfo” structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -789,7 +1000,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -803,18 +1014,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -833,6 +1032,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -914,7 +1125,7 @@ } }, "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the VIP CP instance. See note.\n", + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -936,7 +1147,7 @@ "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular Virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\nNOTE 2: The information can be omitted because it is already available as part of the external CP information in the \n VnfExtCpInfo structure.\n", "type": "object", "required": [ "cpInstanceId", @@ -958,7 +1169,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1005,7 +1216,7 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", "type": "array", "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", @@ -1023,7 +1234,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1037,18 +1248,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1067,6 +1266,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1148,7 +1359,7 @@ } }, "vduIds": { - "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note.\n", + "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note 1.\n", "type": "array", "minItems": 1, "items": { @@ -1238,7 +1449,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1300,7 +1511,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1361,7 +1572,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for \n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only \n required to configure one cpConfig per cpdId, not per VNFC instance. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version.\n", "type": "object", "required": [ "cpdId" @@ -1372,10 +1583,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1408,7 +1619,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceData” structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1434,7 +1645,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI’s transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1448,23 +1659,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1472,7 +1666,7 @@ "format": "MAC" }, "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values:\n -\tVLAN: the subport uses VLAN as encapsulation type.\n -\tINHERIT: the subport gets its segmentation type from the network it's connected to.\nThis attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", "enum": [ "VLAN", @@ -1491,6 +1685,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1543,7 +1754,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes┬« that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", "type": "object", "required": [ "type" @@ -1562,9 +1773,37 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } } } } @@ -1597,7 +1836,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1689,7 +1928,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1751,7 +1990,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1836,7 +2075,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1908,6 +2147,7 @@ "description": "Active monitoring parameters.\n", "type": "array", "items": { + "description": "This type represents a monitoring parameter that is tracked by the VNFM,\n", "type": "object", "required": [ "id", @@ -1941,7 +2181,7 @@ "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", "type": "array", "items": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases.\nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. \nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", "type": "object", "required": [ "id", @@ -1966,7 +2206,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2025,7 +2265,7 @@ "type": "string" }, "vnfcCpInfo": { - "description": "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.\n", + "description": "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. See note 7.\n", "type": "array", "items": { "type": "object", @@ -2065,7 +2305,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -2079,18 +2319,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -2109,6 +2337,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -2198,7 +2438,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceInfo” structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2256,7 +2496,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2326,7 +2566,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2427,7 +2667,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2488,7 +2728,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes®, the type of MCIO corresponds to the \n “kind” property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes® instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes® instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", @@ -2526,7 +2766,7 @@ "type": "string", "enum": [ "Deployment", - "StatefulSet", + "Statefulset", "DaemonSet" ] }, diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index 497c3506..275d26c6 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -1,7 +1,7 @@ { "type": "array", "items": { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -51,10 +51,10 @@ "type": "object" }, "vimConnectionInfo": { - "description": "Information about VIM or CISM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if - the resources of at least of the VNFCs are managed by a VIM and VNF-related resource management in direct mode is applicable. - the resources of at least of the VNFCs are managed by a CISM. This attribute can be modified with the PATCH method.\n", + "description": "Information about VIM or CISM connections to be used for managing the resources for the VNF instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the NFVO and referenced from other data structures via the \"vimConnectionId\" attribute. This attribute shall only be supported and present if - the resources of at least of the VNFCs are managed by a VIM and VNF-related resource management in direct mode is applicable. - the resources of at least of the VNFCs are managed by a CISM. This attribute can be modified with the PATCH method. If VIM connection information is provisioned to the VNFM by means outside the scope of the present document, the information in the \"vimConnectionInfo\" attribute provides necessary information for binding the VnfInstance representing the \"Individual VNF instance\" to the applicable VIM connection information used to perform resource management for the VNF instance. See also the definition of the \"VimConnectionInfo\" in clause 4.4.1.6.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -65,7 +65,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -87,7 +87,7 @@ "description": "Information about the CIR connection for managing OS container images for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -98,7 +98,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -120,7 +120,7 @@ "description": "Information about the MCIOP repository for the VNF instance. Shall be present when all or part of the VNF is realized by a set of OS containers and shall be absent otherwise. See note 1.\n", "type": "object", "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", "required": [ "vimType" @@ -131,7 +131,7 @@ "type": "string" }, "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", "type": "string" }, "interfaceInfo": { @@ -439,8 +439,7 @@ "type": "object", "required": [ "flavourId", - "vnfState", - "extCpInfo" + "vnfState" ], "properties": { "flavourId": { @@ -456,7 +455,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.\nThis attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\nFor 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", @@ -515,12 +514,224 @@ "type": "string" } }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes.\nThe tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request.\nAt most one tag can be included when the data type is used in a VNF LCM operation request.\nWhen the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.\n", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "type": { + "description": "Type of the resource definition referenced.\n", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" + ] + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute 'type' indicates OSCONTAINER and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource. See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note.\n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resource property in the VNFD (clause 6.8.12 in ETSI GS NFV-SOL 001 [14]) that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD (clause 6.2.7.2 in ETSI GS NFV-SOL 001 [14]) for this virtual compute descriptor. The value is a numberthat indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD (clause 6.2.7.2 in ETSI GS NFV-SOL 001 [14]) that indicates the valid vaues for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource.\n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", - "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n “extLinkPorts” attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -581,7 +792,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -595,18 +806,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -625,6 +824,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -730,7 +941,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceInfo” structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -791,7 +1002,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -805,18 +1016,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -835,6 +1034,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -916,7 +1127,7 @@ } }, "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the VIP CP instance. See note.\n", + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -938,7 +1149,7 @@ "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular Virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\nNOTE 2: The information can be omitted because it is already available as part of the external CP information in the \n VnfExtCpInfo structure.\n", "type": "object", "required": [ "cpInstanceId", @@ -960,7 +1171,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1007,7 +1218,7 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", "type": "array", "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", @@ -1025,7 +1236,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1039,18 +1250,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1069,6 +1268,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1150,7 +1361,7 @@ } }, "vduIds": { - "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note.\n", + "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note 1.\n", "type": "array", "minItems": 1, "items": { @@ -1240,7 +1451,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1302,7 +1513,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1363,7 +1574,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for \n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only \n required to configure one cpConfig per cpdId, not per VNFC instance. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version.\n", "type": "object", "required": [ "cpdId" @@ -1374,10 +1585,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1410,7 +1621,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceData” structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1436,7 +1647,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI’s transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1450,23 +1661,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1474,7 +1668,7 @@ "format": "MAC" }, "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values:\n -\tVLAN: the subport uses VLAN as encapsulation type.\n -\tINHERIT: the subport gets its segmentation type from the network it's connected to.\nThis attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", "enum": [ "VLAN", @@ -1493,6 +1687,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1545,7 +1756,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes┬« that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", "type": "object", "required": [ "type" @@ -1564,9 +1775,37 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } } } } @@ -1599,7 +1838,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1691,7 +1930,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1753,7 +1992,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1838,7 +2077,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1910,6 +2149,7 @@ "description": "Active monitoring parameters.\n", "type": "array", "items": { + "description": "This type represents a monitoring parameter that is tracked by the VNFM,\n", "type": "object", "required": [ "id", @@ -1943,7 +2183,7 @@ "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", "type": "array", "items": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases.\nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. \nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", "type": "object", "required": [ "id", @@ -1968,7 +2208,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2027,7 +2267,7 @@ "type": "string" }, "vnfcCpInfo": { - "description": "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.\n", + "description": "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. See note 7.\n", "type": "array", "items": { "type": "object", @@ -2067,7 +2307,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -2081,18 +2321,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -2111,6 +2339,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -2200,7 +2440,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the “NetAttDefResourceInfo” structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2258,7 +2498,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2328,7 +2568,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2429,7 +2669,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -2490,7 +2730,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes®, the type of MCIO corresponds to the \n “kind” property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes® instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes® instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", @@ -2528,7 +2768,7 @@ "type": "string", "enum": [ "Deployment", - "StatefulSet", + "Statefulset", "DaemonSet" ] }, -- GitLab From 8f143117413596898884377bfa0f26c277af6cbf Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 19 Dec 2024 11:52:40 +0500 Subject: [PATCH 084/141] check for Location in Reponse Header as per SOL 003 version 5.1.1 --- SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot | 1 + SOL003/VNFLifecycleManagement-API/Subscriptions.robot | 2 ++ SOL003/VNFLifecycleManagement-API/VNFInstances.robot | 2 ++ 3 files changed, 5 insertions(+) diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index f2e70d53..976b5b89 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -61,6 +61,7 @@ PATCH Individual VNFInstance ... Post-Conditions: VNFInstance modified PATCH individual vnfInstance Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id existence PATCH Individual VNFInstance Precondition failed diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index 4d0c2c0c..e357fc58 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -21,6 +21,7 @@ POST Create a new subscription ... Post-Conditions: in response header Location shall not be null Post Create subscription Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is Subscription Create a new Subscription - DUPLICATION @@ -34,6 +35,7 @@ Create a new Subscription - DUPLICATION ... Post-Conditions: in response header Location shall not be null Post Create subscription - DUPLICATION Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is Subscription Create a new Subscription - NO-DUPLICATION diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index 881aac88..f2b3150a 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -19,6 +19,7 @@ POST Create a new vnfInstance ... Post-Conditions: VNF instance created POST Create a new vnfInstance Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is vnfInstance GET information about multiple VNF instances @@ -237,6 +238,7 @@ POST Create a new vnfInstance with permitted authorization scope ... Post-Conditions: VNF instance created POST Create a new vnfInstance with permitted authorization scope Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is vnfInstance POST Create a new vnfInstance with not permitted authorization scope -- GitLab From 1f48263cfcf6ce95ff2d31d5db266eb63bd99a87 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 19 Dec 2024 12:05:34 +0500 Subject: [PATCH 085/141] add test case to check response of initantiate VNF Task without autorization --- .../InstantiateVNFTask.robot | 20 +++++++++++++++---- .../VnfLcmMntOperationKeywords.robot | 10 +++++++++- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 6b7594b0..94d36732 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -13,7 +13,7 @@ Instantiate a vnfInstance ... Test title: Post Instantiate Individual VNFInstance ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state - ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ Instantiate a vnfInstance Conflict ... Test title: Post Instantiate Individual VNFInstance ... Test objective: The objective is to verify that the instantiation of the vnf cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ Instantiate a vnfInstance with permitted authorization scope ... Test title: Post Instantiate Individual VNFInstance with permitted authorization scope ... Test objective: The objective is to instantiate a VNF instance with permitted authorization scope ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state - ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -102,10 +102,22 @@ Instantiate a vnfInstance with not permitted authorization scope ... Test title: Post Instantiate Individual VNFInstance with not permitted authorization scope ... Test objective: The objective is to instantiate a VNF instance with not permitted authorization scope ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state - ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none POST instantiate individual vnfInstance with not permitted authorization scope Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails +Instantiate a vnfInstance - Unauthorized + [Documentation] Test ID: 7.3.1.3.9 + ... Test title: Post Instantiate Individual VNFInstance - Unauthorized + ... Test objective: The objective is to instantiate a VNF instance without authorization + ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST instantiate individual vnfInstance - Unauthorized + Check HTTP Response Status Code Is 401 Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index c5ccf660..95d9e1f7 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -2803,4 +2803,12 @@ Check HTTP Content-Length Header Is Set JWT Encode [Arguments] ${payload} ${key} ${algorithm} ${encoded}= Evaluate jwt.encode(${payload}, ${key}, ${algorithm}) - [Return] ${encoded} \ No newline at end of file + [Return] ${encoded} +POST instantiate individual vnfInstance - Unauthorized + Log Trying to Instantiate a vnf Instance witout authorization + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + ${body}= Get File jsons/instantiateVnfRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file -- GitLab From 6453017d8d791fb5e3eaaefefeca0c3e2235962d Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 19 Dec 2024 12:16:38 +0500 Subject: [PATCH 086/141] Add test case for changeExternal VNF Connectivity Task to validate 409 - Conflict response code --- .../ChangeExternalVNFConnectivityTask.robot | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index 270d4729..e2cf6190 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -93,4 +93,16 @@ POST Change external VNF connectivity with not permitted authorization scope ... Applicability: none ... Post-Conditions: in response header Location shall not be null POST Change External VNF Connectivity with not permitted authorization scope - Check HTTP Response Status Code Is 403 \ No newline at end of file + Check HTTP Response Status Code Is 403 +POST Change external VNF connectivity - Conflict + [Documentation] Test ID: 7.3.1.10.8 + ... Test title: POST Change external VNF connectivity - Conflict + ... Test objective: The objective is to test that POST method can not trigger a change in VNF external connectivity due to conflict + ... Pre-conditions: none + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change External VNF Connectivity + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file -- GitLab From 9b2c35b9f7d62071633f88d9a9cb7d0699760cb2 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 19 Dec 2024 13:06:55 +0500 Subject: [PATCH 087/141] correction of response code as per SOL 003 version 5.1.1 --- .../ScaleVNFTask.robot | 6 ++---- .../TerminateVNFTask.robot | 2 +- .../VnfLcmOperationOccurences.robot | 16 ++++++++-------- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index 6f72873b..4e5e0a03 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -120,10 +120,8 @@ POST Scale a vnfInstance with not permitted authorization scope ... Applicability: none ... Post-Conditions: none POST Scale vnfInstance with not permitted authorization scope - Check HTTP Response Status Code Is 202 - Check HTTP Response Header Contains Location - Check Individual VNF LCM operation occurrence operationState is STARTING - + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index b8ba81b1..8ae29c72 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -32,7 +32,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Applicability: none ... Post-Conditions: none POST Terminate VNF in NOT-INSTANTIATED state - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails GET Terminate VNFInstance - Method not implemented diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index fdb3e53d..a3d7b602 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -28,7 +28,7 @@ GET status information about multiple VNF LCM Operation OCC ... Applicability: none ... Post-Conditions: none GET VNF LCM Operation occurrences - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs GET status information about multiple VNF LCM Operation OCC Bad Request Invalid attribute-based filtering parameters @@ -67,7 +67,7 @@ GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Applicability: none ... Post-Conditions: none Get VNF LCM Operation occurrences with all_fields attribute selector - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs GET status information about multiple VNF LCM Operation OCC with "exlude_default" @@ -80,7 +80,7 @@ GET status information about multiple VNF LCM Operation OCC with "exlude_default ... Applicability: none ... Post-Conditions: none Get VNF LCM Operation occurrences with exclude_default attribute selector - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs GET status information about multiple VNF LCM Operation OCC with "fields" @@ -93,7 +93,7 @@ GET status information about multiple VNF LCM Operation OCC with "fields" ... Applicability: none ... Post-Conditions: none Get VNF LCM Operation occurrences with fields attribute selector - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs GET status information about multiple VNF LCM Operation OCC with "exclude_fields" @@ -106,7 +106,7 @@ GET status information about multiple VNF LCM Operation OCC with "exclude_fields ... Applicability: none ... Post-Conditions: none Get VNF LCM Operation occurrences with exclude_fields attribute selector - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs PUT status information about multiple VNF LCM Operation OCC - Method not implemented @@ -155,7 +155,7 @@ GET status information about multiple VNF LCM Operation OCC to get Paged Respons ... Applicability: The VNFM supports response paging for the VNF lifecycle management operation occurrences resources ... Post-Conditions: none GET VNF LCM Operation occurrences - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Header Contain Link GET information about multiple VNF LCM Operation OCC as a Paged Response with nextpage_opauque_marker parameter @@ -193,7 +193,7 @@ GET status information about multiple VNF LCM Operation OCC with "exclude_defaul ... Applicability: none ... Post-Conditions: none Get VNF LCM Operation occurrences with exclude_default and fields attribute selector - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs GET status information about multiple VNF LCM Operation OCC with permitted authorization scope @@ -206,7 +206,7 @@ GET status information about multiple VNF LCM Operation OCC with permitted autho ... Applicability: none ... Post-Conditions: none GET VNF LCM Operation occurrences with permitted authorization scope - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs GET status information about multiple VNF LCM Operation OCC with not permitted authorization scope -- GitLab From 2c95f91609229b2fe3e293a3381f80881d558071 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 19 Dec 2024 17:58:43 +0500 Subject: [PATCH 088/141] Fix issue #188: Set version headers --- .../ApiVersion.robot | 30 +- .../ChangeCurrentVNFPackageTask.robot | 3 +- .../CreateVNFSnapshotTask.robot | 3 +- .../IndividualVNFInstance.robot | 3 +- .../InstantiateVNFTaskWorkflow.robot | 9 +- .../NotificationEndpoint.robot | 9 +- .../OperateVNFTask.robot | 3 +- .../RetryOperationTask.robot | 3 +- .../RevertToVNFSnapshotTask.robot | 3 +- .../RollbackOperationTask.robot | 3 +- .../ScaleVNFTask.robot | 3 +- .../SubscriptionKeywords.robot | 1 + .../TerminateVNFTask.robot | 3 +- .../VnfLcmMntOperationKeywords.robot | 577 +++++++++++++----- .../environment/variables.txt | 1 + 15 files changed, 470 insertions(+), 184 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot index eec99366..0c6cacf4 100644 --- a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot @@ -130,70 +130,80 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response diff --git a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot index 7a8cd46f..ed6dcd51 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot @@ -110,7 +110,8 @@ POST Change current VNF Package Task with not permitted authorization scope *** Keywords *** Check resource existence - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot index cdaa6cef..cf2a70cf 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot @@ -136,7 +136,8 @@ POST Create VNF Snapshot Task with not permitted authorization scope *** Keywords *** Check resource existence - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 976b5b89..706c2023 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -159,7 +159,8 @@ Get Information about an individual VNF Instance with not permitted authorizatio *** Keywords *** Check resource existence - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${instantiatedVnfInstanceId} diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot index 8833951b..bec565b1 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot @@ -72,7 +72,8 @@ VNF Instantiation with attribute targetScaleLevelInfo *** Keywords *** Send VNF Instantiation Request Log Instantiate a VNF Instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/instantiateVnfRequest.json @@ -80,7 +81,8 @@ Send VNF Instantiation Request Send VNF Instantiation Request with attribute instantiationLevelId Log Instantiate a VNF Instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/instantiateVnfRequestInstantiationLevelId.json @@ -89,7 +91,8 @@ Send VNF Instantiation Request with attribute instantiationLevelId Send VNF Instantiation Request with attribute targetScaleLevelInfo Log Instantiate a VNF Instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/instantiateVnfRequestTargetScaleLevelInfo.json diff --git a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot index 7d8b1822..9dcd95dd 100644 --- a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot @@ -60,7 +60,8 @@ Check HTTP Response Status Code Is Post VNF LCM Operation Occurrence Notification log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/VnfLcmOperationOccurrenceNotification.json @@ -71,7 +72,8 @@ Post VNF LCM Operation Occurrence Notification Post VNF Identifier Creation Notification log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/VnfIdentifierCreationNotification.json @@ -82,7 +84,8 @@ Post VNF Identifier Creation Notification Post VNF Identifier Deletion Notification log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/VnfIdentifierDeletionNotification.json diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index 567fdd9d..70fcaafc 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -124,7 +124,8 @@ POST Operate a vnfInstance with not permitted authorization scope *** Keywords *** Check resource existence - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index 3e55d236..e48784bc 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -127,7 +127,8 @@ Post Retry operation task with not permitted authorization scope *** Keywords *** Check resource existence - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot index 0f913619..3b82c8d3 100644 --- a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -123,7 +123,8 @@ POST Revert to VNF Snapshot Task with not permitted authorization scope *** Keywords *** Check resource existence - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index ee21c4d0..f3cc82ce 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -126,7 +126,8 @@ Post Rollback operation task with not permitted authorization scope *** Keywords *** Check resource existence - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} Integer response status 200 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index 4e5e0a03..c24b7796 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -124,7 +124,8 @@ POST Scale a vnfInstance with not permitted authorization scope Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** Check resource existence - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} diff --git a/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot b/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot index cc358f27..d1bd160f 100644 --- a/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/SubscriptionKeywords.robot @@ -13,6 +13,7 @@ Library MockServerLibrary Check subscriptions about one VNFInstance and operation type [Arguments] ${vnfInstanceId} ${notificationType} ${operationType}="" ${operationState}="" Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${notificationType}=="VnfIdentifierCreationNotification" or ${notificationType}=="VnfIdentifierDeletionNotification" GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?vnfInstanceIds=${vnfInstanceId}¬ificationTypes=${notificationType} ... ELSE GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?vnfInstanceIds=${vnfInstanceId}¬ificationTypes=${notificationType}&operationTypes=${operationType}&operationStates=${operationState} diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index 8ae29c72..e8ab1c1a 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -112,7 +112,8 @@ POST Terminate a vnfInstance with not permitted authorization scope *** Keywords *** Check resource existence - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 95d9e1f7..56d9aea3 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -22,7 +22,8 @@ Create Sessions Get Vnf Instance [Arguments] ${vnfInstanceId} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} @@ -69,7 +70,8 @@ Check resource not Instantiated Check VNF Instance [Arguments] ${vnfId} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${response}= Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfId} @@ -127,6 +129,7 @@ Check Individual VNF LCM operation occurrence operationState is Send VNF Scale Out Request Log Trying to scale a vnf Instance Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfOutRequest.json @@ -137,7 +140,8 @@ Send VNF Scale Out Request Send VNF Scale To Level Request [Documentation] Instantiate VNF The POST method instantiates a VNF instance. Log Trying to Instantiate a vnf Instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfToLevelRequest.json @@ -147,7 +151,8 @@ Send VNF Scale To Level Request Send VNF Instance Resource Create Request Log Create VNF instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File @@ -162,7 +167,8 @@ Send VNF Instance Resource Delete Request Send Change VNF Flavour Request Log Trying to change the deployment flavour of a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/changeVnfFlavourRequest.json @@ -170,7 +176,8 @@ Send Change VNF Flavour Request Send Change VNF Operational State Request Log Trying to change the operational state of a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/operateVnfRequest.json @@ -178,7 +185,8 @@ Send Change VNF Operational State Request Send Heal VNF Request Log Trying to heal a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/healVnfRequest.json @@ -186,7 +194,8 @@ Send Heal VNF Request Send Change Ext Connectivity Request Log Trying to change the external connectivity of a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/changeExtVnfConnectivityRequest.json @@ -194,7 +203,8 @@ Send Change Ext Connectivity Request Send Terminate VNF Request Log Trying to terminate a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/terminateVnfRequest.json @@ -202,7 +212,8 @@ Send Terminate VNF Request Send Info Modification Request Log Trying to update information of a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/patchBodyRequest.json @@ -210,26 +221,31 @@ Send Info Modification Request Send Retry Operation Request Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry Send Roll back Operation Request Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback Send Fail Operation Request Log Fail a VNF lifecycle operation if that operation has experienced a temporary failure + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail Send Cancel Operation Request Log Cancel an ongoing VNF lifecycle operation + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} POST Cancel operation task Log Cancel an ongoing VNF lifecycle operation + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Cancel a VNF lifecycle operation Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} @@ -239,6 +255,7 @@ POST Cancel operation task POST Cancel operation task with conflict Log Cancel an ongoing VNF lifecycle operation + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Cancel a VNF lifecycle operation Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotStartingProcessingRollingback}/cancel ${CancelMode} @@ -248,6 +265,7 @@ POST Cancel operation task with conflict POST Cancel operation task not existing Log Cancel an ongoing VNF lifecycle operation + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Cancel a VNF lifecycle operation Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingVnfLcmOpOccId}/cancel ${CancelMode} @@ -259,6 +277,7 @@ POST Cancel operation task with permitted authorization scope Log Cancel an ongoing VNF lifecycle operation with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Cancel a VNF lifecycle operation Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} @@ -270,6 +289,7 @@ POST Cancel operation task with not permitted authorization scope Log Cancel an ongoing VNF lifecycle operation with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${Authorization_Token}"} Log Cancel a VNF lifecycle operation Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} @@ -279,6 +299,7 @@ POST Cancel operation task with not permitted authorization scope GET Cancel operation task log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response @@ -286,6 +307,7 @@ GET Cancel operation task PUT Cancel operation task log Trying to perform a PUT. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response @@ -293,13 +315,15 @@ PUT Cancel operation task PATCH Cancel operation task Log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Cancel operation task Log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response @@ -307,7 +331,8 @@ DELETE Cancel operation task POST Change External VNF Connectivity Log Trying to change the external connectivity of a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/changeExtVnfConnectivityRequest.json @@ -319,7 +344,8 @@ POST Change External VNF Connectivity with permitted authorization scope Log Trying to change the external connectivity of a VNF instance with permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${CHANGE_EXT_CONN_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${body}= Get File jsons/changeExtVnfConnectivityRequest.json @@ -329,7 +355,8 @@ POST Change External VNF Connectivity with permitted authorization scope POST Change External VNF Connectivity with not permitted authorization scope Log Trying to change the external connectivity of a VNF instance with not permitted authorization scope. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} ${scopeValue}= Create Dictionary scopeValue=${CHANGE_EXT_CONN_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} @@ -341,6 +368,7 @@ POST Change External VNF Connectivity with not permitted authorization scope GET Change External VNF Connectivity log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response @@ -348,6 +376,7 @@ GET Change External VNF Connectivity PUT Change External VNF Connectivity log Trying to perform a PUT. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response @@ -355,13 +384,15 @@ PUT Change External VNF Connectivity PATCH Change External VNF Connectivity Log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Change External VNF Connectivity Log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response @@ -369,7 +400,8 @@ DELETE Change External VNF Connectivity POST Change VNF deployment flavour Log Trying to change the deployment flavour of a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File @@ -381,7 +413,8 @@ POST Change VNF deployment flavour POST Change VNF deployment flavour of NOT-INSTANTIATED VNF Log Trying to change the deployment flavour of a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/changeVnfFlavourRequest.json @@ -392,7 +425,8 @@ POST Change VNF deployment flavour of NOT-INSTANTIATED VNF POST Change VNF deployment flavour of not existing VNF Log Trying to change the deployment flavour of a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/changeVnfFlavourRequest.json @@ -405,7 +439,8 @@ POST Change VNF deployment flavour with permitted authorization scope Log Trying to change the deployment flavour of a VNF instance with permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${CHANGE_FLAVOUR_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File @@ -419,7 +454,8 @@ POST Change VNF deployment flavour with not permitted authorization scope Log Trying to change the deployment flavour of a VNF instance with not permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${CHANGE_FLAVOUR_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File @@ -431,6 +467,7 @@ POST Change VNF deployment flavour with not permitted authorization scope GET Change VNF deployment flavour log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response @@ -438,6 +475,7 @@ GET Change VNF deployment flavour PUT Change VNF deployment flavour log Trying to perform a PUT. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response @@ -445,13 +483,15 @@ PUT Change VNF deployment flavour PATCH Change VNF deployment flavour Log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE Change VNF deployment flavour Log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response @@ -459,7 +499,8 @@ DELETE Change VNF deployment flavour POST Create a new vnfInstance Log Create VNF instance by POST to /vnf_instances - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/createVnfRequest.json @@ -470,7 +511,8 @@ POST Create a new vnfInstance POST Create a new vnfInstance - Not ENABLED Log Create VNF instance by POST to /vnf_instances using vnfdId of a VNF Package which is not in ENABLED state or DNE. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/createVnfRequest.json @@ -481,7 +523,8 @@ POST Create a new vnfInstance - Not ENABLED GET multiple vnfInstances Log Query VNF The GET method queries information about multiple VNF instances. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response @@ -491,7 +534,8 @@ GET multiple vnfInstances Get multiple vnfInstances with nextpage_opaque_marker parameter Log Get next page of subscriptions - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query using the URI provided in the previous GET request and validate response @@ -501,7 +545,8 @@ Get multiple vnfInstances with nextpage_opaque_marker parameter GET multiple vnfInstances with bad attribute Log Query VNF The GET method queries information about multiple VNF instances. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response @@ -511,7 +556,8 @@ GET multiple vnfInstances with bad attribute GET multiple vnfInstances with bad filter Log Query VNF The GET method queries information about multiple VNF instances. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response @@ -521,7 +567,8 @@ GET multiple vnfInstances with bad filter GET multiple vnfInstances using filter Log Query VNF The GET method queries information about multiple VNF instances using filter - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response @@ -532,6 +579,7 @@ GET multiple vnfInstances using filter GET multiple vnfInstances with all_fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?all_fields ${output}= Output response @@ -539,6 +587,7 @@ GET multiple vnfInstances with all_fields attribute selector GET multiple vnfInstances with exclude_default attribute selector Log Query status information about multiple VNF instances using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_default ${output}= Output response @@ -546,6 +595,7 @@ GET multiple vnfInstances with exclude_default attribute selector GET multiple vnfInstances with fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=${fields_vnfInstance} ${output}= Output response @@ -553,6 +603,7 @@ GET multiple vnfInstances with fields attribute selector GET multiple vnfInstances with exclude_default and fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?fields=${fields_vnfInstance}&exclude_default ${output}= Output response @@ -560,6 +611,7 @@ GET multiple vnfInstances with exclude_default and fields attribute selector GET multiple vnfInstances with exclude_fields attribute selector Log Query status information about multiple VNF instances, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_fields=${fields_vnfInstance} ${output}= Output response @@ -567,7 +619,8 @@ GET multiple vnfInstances with exclude_fields attribute selector PUT VNFInstances log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances @@ -576,7 +629,8 @@ PUT VNFInstances PATCH VNFInstances log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances @@ -585,7 +639,8 @@ PATCH VNFInstances DELETE VNFInstances log Trying to perform a DELETE. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances @@ -596,7 +651,8 @@ POST Create a new vnfInstance with permitted authorization scope Log Create VNF instance by POST to /vnf_instances with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${VNF_INSTANCE_INFO_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/createVnfRequest.json @@ -609,7 +665,8 @@ POST Create a new vnfInstance with not permitted authorization scope Log Create VNF instance by POST to /vnf_instances with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${VNF_INSTANCE_INFO_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/createVnfRequest.json @@ -620,7 +677,8 @@ POST Create a new vnfInstance with not permitted authorization scope POST individual vnfInstance log Trying to perform a POST. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} @@ -629,7 +687,8 @@ POST individual vnfInstance GET individual vnfInstance log Trying to get information about an individual VNF instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} @@ -640,7 +699,8 @@ GET individual vnfInstance with permitted authorization scope log Trying to get information about an individual VNF instance with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${VNF_INSTANCE_INFO_READONLY_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} @@ -651,7 +711,8 @@ GET individual vnfInstance with not permitted authorization scope log Trying to get information about an individual VNF instance with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${VNF_INSTANCE_INFO_READONLY_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} @@ -660,7 +721,8 @@ GET individual vnfInstance with not permitted authorization scope PUT individual vnfInstance log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} @@ -669,7 +731,8 @@ PUT individual vnfInstance PATCH individual vnfInstance log Trying to modify an individual VNF instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File @@ -681,7 +744,8 @@ PATCH individual vnfInstance POST conflicting operation Log Trying to create conflicting operation. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/terminateVnfRequest.json @@ -691,7 +755,8 @@ POST conflicting operation PATCH individual vnfInstance with conflict POST conflicting operation log Trying to modify an individual VNF instance with conflict - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File @@ -703,7 +768,8 @@ PATCH individual vnfInstance with conflict PATCH individual vnfInstance - Etag mismatch log Trying to modify an individual VNF instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Set Headers {"If-Match": "${invalid_etag}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -716,6 +782,7 @@ PATCH individual vnfInstance - Etag mismatch DELETE individual vnfInstance log Trying to delete an individual VNF instance + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response @@ -723,6 +790,7 @@ DELETE individual vnfInstance DELETE individual vnfInstance in INSTANTIATED state log Trying to delete an individual VNF instance + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${instantiatedVnfInstanceId} ${outputResponse}= Output response @@ -730,7 +798,8 @@ DELETE individual vnfInstance in INSTANTIATED state POST instantiate individual vnfInstance Log Trying to Instantiate a vnf Instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/instantiateVnfRequest.json @@ -740,7 +809,8 @@ POST instantiate individual vnfInstance POST instantiate individual vnfInstance with conflict Log Trying to Instantiate a vnf Instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/instantiateVnfRequest.json @@ -750,6 +820,7 @@ POST instantiate individual vnfInstance with conflict GET instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response @@ -757,6 +828,7 @@ GET instantiate individual vnfInstance PUT instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response @@ -764,6 +836,7 @@ PUT instantiate individual vnfInstance PATCH instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response @@ -771,6 +844,7 @@ PATCH instantiate individual vnfInstance DELETE instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${outputResponse}= Output response @@ -780,7 +854,8 @@ POST instantiate individual vnfInstance with permitted authorization scope Log Trying to Instantiate a vnf Instance with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${INSTANTIATE_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${body}= Get File jsons/instantiateVnfRequest.json @@ -792,7 +867,8 @@ POST instantiate individual vnfInstance with not permitted authorization scope Log Trying to Instantiate a vnf Instance with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${INSTANTIATE_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${body}= Get File jsons/instantiateVnfRequest.json @@ -802,7 +878,8 @@ POST instantiate individual vnfInstance with not permitted authorization scope POST Scale vnfInstance Log Trying to Instantiate a vnf Instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleVnfRequest.json @@ -813,7 +890,8 @@ POST Scale vnfInstance POST Scale vnfInstance with VNF NOT-INSTANTIATED Log Trying to Instantiate a vnf Instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleVnfRequest.json @@ -823,7 +901,8 @@ POST Scale vnfInstance with VNF NOT-INSTANTIATED Set Global Variable ${response} ${outputResponse} POST Scale vnfInstance with not existing VNF Log Trying to Instantiate a vnf Instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleVnfRequest.json @@ -835,7 +914,8 @@ POST Scale vnfInstance with permitted authorization scope Log Trying to Instantiate a vnf Instance with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${SCALE_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/scaleVnfRequest.json @@ -847,7 +927,8 @@ POST Scale vnfInstance with not permitted authorization scope Log Trying to Instantiate a vnf Instance with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${SCALE_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/scaleVnfRequest.json @@ -857,7 +938,8 @@ POST Scale vnfInstance with not permitted authorization scope Set Global Variable ${response} ${outputResponse} GET Scale vnfInstance Log Trying to get a scale a vnf Instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfRequest.json @@ -866,7 +948,8 @@ GET Scale vnfInstance Set Global Variable ${response} ${outputResponse} PUT Scale vnfInstance Log Trying to modify a scale vnf Instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfRequest.json @@ -875,7 +958,8 @@ PUT Scale vnfInstance Set Global Variable ${response} ${outputResponse} PATCH Scale vnfInstance Log Trying to modify a scale vnf Instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfRequest.json @@ -884,7 +968,8 @@ PATCH Scale vnfInstance Set Global Variable ${response} ${outputResponse} DELETE Scale vnfInstance Log Trying to modify a scale vnf Instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/scaleVnfRequest.json @@ -894,7 +979,8 @@ DELETE Scale vnfInstance POST Scale vnfInstance to level with InstantiationLevelId attribute Log Trying to scale a vnf Instance to level - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleVnfToLevelRequestInstantiationLevelId.json @@ -905,7 +991,8 @@ POST Scale vnfInstance to level with InstantiationLevelId attribute POST Scale vnfInstance to level with scaleInfo attribute Log Trying to scale a vnf Instance to level - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleVnfToLevelRequestScaleInfo.json @@ -915,7 +1002,8 @@ POST Scale vnfInstance to level with scaleInfo attribute Set Global Variable ${response} ${outputResponse} POST Scale vnfInstance to level with VNF NOT-INSTANTIATED Log Trying to scale a vnf Instance to level - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleVnfToLevelRequest.json @@ -925,7 +1013,8 @@ POST Scale vnfInstance to level with VNF NOT-INSTANTIATED Set Global Variable ${response} ${outputResponse} POST Scale vnfInstance to level with not existing VNF Log Trying to scale a vnf Instance to level - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/scaleVnfToLevelRequest.json @@ -937,7 +1026,8 @@ POST Scale vnfInstance to level with InstantiationLevelId attribute with permitt Log Trying to scale a vnf Instance to level with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${SCALE_TO_LEVEL_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/scaleVnfToLevelRequestInstantiationLevelId.json @@ -950,7 +1040,8 @@ POST Scale vnfInstance to level with InstantiationLevelId attribute with not per Log Trying to scale a vnf Instance to level with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${SCALE_TO_LEVEL_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/scaleVnfToLevelRequestInstantiationLevelId.json @@ -960,6 +1051,7 @@ POST Scale vnfInstance to level with InstantiationLevelId attribute with not per Set Global Variable ${response} ${outputResponse} GET Scale vnfInstance to level log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response @@ -967,6 +1059,7 @@ GET Scale vnfInstance to level PUT Scale vnfInstance to level log Trying to perform a PUT. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response @@ -974,6 +1067,7 @@ PUT Scale vnfInstance to level PATCH Scale vnfInstance to level log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response @@ -981,6 +1075,7 @@ PATCH Scale vnfInstance to level DELETE Scale vnfInstance to level log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${outputResponse}= Output response @@ -988,7 +1083,8 @@ DELETE Scale vnfInstance to level POST Terminate VNF Log Trying to terminate a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/terminateVnfRequest.json @@ -999,7 +1095,8 @@ POST Terminate VNF POST Terminate VNF in NOT-INSTANTIATED state Log Trying to terminate a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/terminateVnfRequest.json @@ -1012,7 +1109,8 @@ POST Terminate VNF with permitted authorization scope Log Trying to terminate a VNF instance with permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${TERMINATE_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/terminateVnfRequest.json @@ -1025,7 +1123,8 @@ POST Terminate VNF with not permitted authorization scope Log Trying to terminate a VNF instance with not permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${TERMINATE_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/terminateVnfRequest.json @@ -1036,6 +1135,7 @@ POST Terminate VNF with not permitted authorization scope GET Terminate VNF log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response @@ -1043,6 +1143,7 @@ GET Terminate VNF PUT Terminate VNF log Trying to perform a PUT. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response @@ -1050,6 +1151,7 @@ PUT Terminate VNF PATCH Terminate VNF log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response @@ -1057,6 +1159,7 @@ PATCH Terminate VNF DELETE Terminate VNF log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response @@ -1064,7 +1167,8 @@ DELETE Terminate VNF POST Heal VNF Log Trying to heal a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/healVnfRequest.json @@ -1075,7 +1179,8 @@ POST Heal VNF POST Heal VNF Not Instantiated Log Trying to heal a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/healVnfRequest.json @@ -1086,7 +1191,8 @@ POST Heal VNF Not Instantiated POST Heal VNF Not Existing Log Trying to heal a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/healVnfRequest.json @@ -1097,7 +1203,8 @@ POST Heal VNF Not Existing POST Heal VNF with permitted authorization scope Log Trying to heal a VNF instance with permitted authorization scope. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} ${scopeValue}= Create Dictionary scopeValue=${HEAL_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} @@ -1110,7 +1217,8 @@ POST Heal VNF with permitted authorization scope POST Heal VNF with not permitted authorization scope Log Trying to heal a VNF instance with not permitted authorization scope. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} ${scopeValue}= Create Dictionary scopeValue=${HEAL_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} @@ -1123,6 +1231,7 @@ POST Heal VNF with not permitted authorization scope GET Heal VNF log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response @@ -1130,6 +1239,7 @@ GET Heal VNF PUT Heal VNF log Trying to perform a PUT. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response @@ -1137,6 +1247,7 @@ PUT Heal VNF PATCH Heal VNF log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response @@ -1144,6 +1255,7 @@ PATCH Heal VNF DELETE Heal VNF log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response @@ -1151,7 +1263,8 @@ DELETE Heal VNF POST Operate VNF Log Trying to operate a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/operateVnfRequest.json @@ -1162,7 +1275,8 @@ POST Operate VNF POST Operate VNF with conflict Log Trying to operate a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/operateVnfRequest.json @@ -1173,7 +1287,8 @@ POST Operate VNF with conflict POST Operate VNF not existing Log Trying to operate a VNF instance. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/operateVnfRequest.json @@ -1184,6 +1299,7 @@ POST Operate VNF not existing GET Operate VNF log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response @@ -1191,6 +1307,7 @@ GET Operate VNF PUT Operate VNF log Trying to perform a PUT. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response @@ -1198,6 +1315,7 @@ PUT Operate VNF PATCH Operate VNF log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response @@ -1205,6 +1323,7 @@ PATCH Operate VNF DELETE Operate VNF log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response @@ -1212,7 +1331,8 @@ DELETE Operate VNF POST Operate VNF with permitted authorization scope Log Trying to operate a VNF instance with permitted authorization scope. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} ${scopeValue}= Create Dictionary scopeValue=${OPERATE_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} @@ -1225,7 +1345,8 @@ POST Operate VNF with permitted authorization scope POST Operate VNF with not permitted authorization scope Log Trying to operate a VNF instance with not permitted authorization scope. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} ${scopeValue}= Create Dictionary scopeValue=${OPERATE_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} @@ -1238,14 +1359,16 @@ POST Operate VNF with not permitted authorization scope Post VNF LCM Operation occurrences log Trying to perform a POST. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM Operation occurrences Log Query status information about multiple VNF lifecycle management operation occurrences. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs @@ -1253,7 +1376,8 @@ GET VNF LCM Operation occurrences Set Global Variable ${response} ${outputResponse} Get VNF LCM Operation occurrences with nextpage_opaque_marker parameter Log Get next page of subscriptions - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query using the URI provided in the previous GET request and validate response @@ -1262,21 +1386,24 @@ Get VNF LCM Operation occurrences with nextpage_opaque_marker parameter Set Global Variable ${response} ${outputResponse} GET VNF LCM Operation occurrences invalid attribute Log Query status information about multiple VNF lifecycle management operation occurrences. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?attribute_not_exist=some_value ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM Operation occurrences invalid filter Log Query status information about multiple VNF lifecycle management operation occurrences. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?${NEG_FILTER_vnfLcmOpOcc} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM Operation occurrences using filter Log Query status information about multiple VNF lifecycle management operation occurrences. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?${POS_FILTER_vnfLcmOpOcc} ${outputResponse}= Output response @@ -1284,6 +1411,7 @@ GET VNF LCM Operation occurrences using filter Get VNF LCM Operation occurrences with all_fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?all_fields ${output}= Output response @@ -1291,6 +1419,7 @@ Get VNF LCM Operation occurrences with all_fields attribute selector Get VNF LCM Operation occurrences with exclude_default and fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=${fields_vnfLcmOpOcc}&exclude_default ${output}= Output response @@ -1298,6 +1427,7 @@ Get VNF LCM Operation occurrences with exclude_default and fields attribute sele Get VNF LCM Operation occurrences with exclude_default attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_default ${output}= Output response @@ -1305,6 +1435,7 @@ Get VNF LCM Operation occurrences with exclude_default attribute selector Get VNF LCM Operation occurrences with fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?fields=${fields_vnfLcmOpOcc} ${output}= Output response @@ -1312,6 +1443,7 @@ Get VNF LCM Operation occurrences with fields attribute selector Get VNF LCM Operation occurrences with exclude_fields attribute selector Log Query status information about multiple VNF lifecycle management operation occurrences, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_fields=${fields_vnfLcmOpOcc} ${output}= Output response @@ -1320,7 +1452,8 @@ GET VNF LCM Operation occurrences with permitted authorization scope Log Query status information about multiple VNF lifecycle management operation occurrences with permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs @@ -1330,7 +1463,8 @@ GET VNF LCM Operation occurrences with not permitted authorization scope Log Query status information about multiple VNF lifecycle management operation occurrences with not permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs @@ -1338,35 +1472,40 @@ GET VNF LCM Operation occurrences with not permitted authorization scope Set Global Variable ${response} ${outputResponse} PUT VNF LCM Operation occurrences log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} PATCH VNF LCM Operation occurrences log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} DELETE VNF LCM Operation occurrences log Trying to perform a DELETE. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Individual VNF LCM Operation occurrences log Trying to perform a POST. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Individual VNF LCM Operation occurrences Log Query status information about multiple VNF lifecycle management operation occurrences. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} @@ -1374,7 +1513,8 @@ Get Individual VNF LCM Operation occurrences Set Global Variable ${response} ${outputResponse} Get Individual VNF LCM Operation occurrences with permitted authorization scope Log Query status information about multiple VNF lifecycle management operation occurrences with permitted authorization scope. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -1384,7 +1524,8 @@ Get Individual VNF LCM Operation occurrences with permitted authorization scope Set Global Variable ${response} ${outputResponse} Get Individual VNF LCM Operation occurrences with not permitted authorization scope Log Query status information about multiple VNF lifecycle management operation occurrences with not permitted authorization scope. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -1394,21 +1535,24 @@ Get Individual VNF LCM Operation occurrences with not permitted authorization sc Set Global Variable ${response} ${outputResponse} Put multiple VNF instances log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch multiple VNF instances log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete multiple VNF instances log Trying to perform a DELETE. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response @@ -1416,6 +1560,7 @@ Delete multiple VNF instances Post Retry operation Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry @@ -1424,6 +1569,7 @@ Post Retry operation Post Retry operation with conflict Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotFailedTemp}/retry @@ -1431,6 +1577,7 @@ Post Retry operation with conflict Set Global Variable ${response} ${outputResponse} Post Retry operation not existing Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingVnfLcmOpOccId}/retry @@ -1438,7 +1585,8 @@ Post Retry operation not existing Set Global Variable ${response} ${outputResponse} Get Retry operation Log Trying to perform a GET. This method should not be implemented. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry @@ -1446,21 +1594,24 @@ Get Retry operation Set Global Variable ${response} ${outputResponse} Put Retry operation log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Retry operation log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Retry operation log Trying to perform a DELETE. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response @@ -1469,6 +1620,7 @@ Post Retry operation with permitted authorization scope Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry @@ -1478,6 +1630,7 @@ Post Retry operation with not permitted authorization scope Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry @@ -1485,6 +1638,7 @@ Post Retry operation with not permitted authorization scope Set Global Variable ${response} ${outputResponse} Post Rollback operation Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback @@ -1492,6 +1646,7 @@ Post Rollback operation Set Global Variable ${response} ${outputResponse} Post Rollback operation with conflict Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotFailedTemp}/rollback @@ -1499,6 +1654,7 @@ Post Rollback operation with conflict Set Global Variable ${response} ${outputResponse} Post Rollback operation not existing Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingVnfLcmOpOccId}/rollback @@ -1506,7 +1662,8 @@ Post Rollback operation not existing Set Global Variable ${response} ${outputResponse} Get Rollback operation Log Trying to perform a GET. This method should not be implemented. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback @@ -1514,21 +1671,24 @@ Get Rollback operation Set Global Variable ${response} ${outputResponse} Put Rollback operation log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Rollback operation log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Rollback operation log Trying to perform a DELETE. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response @@ -1537,6 +1697,7 @@ Post Rollback operation with permitted authorization scope Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback @@ -1546,6 +1707,7 @@ Post Rollback operation with not permitted authorization scope Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback @@ -1553,6 +1715,7 @@ Post Rollback operation with not permitted authorization scope Set Global Variable ${response} ${outputResponse} Post Fail operation Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail @@ -1560,6 +1723,7 @@ Post Fail operation Set Global Variable ${response} ${outputResponse} Post Fail operation with conflict Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccIdNotFailedTemp}/fail @@ -1568,6 +1732,7 @@ Post Fail operation with conflict Post Fail operation not existing Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingvnfLcmOpOccId}/fail @@ -1578,6 +1743,7 @@ Post Fail operation with permitted authorization scope Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail @@ -1587,6 +1753,7 @@ Post Fail operation with not permitted authorization scope Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail @@ -1595,7 +1762,8 @@ Post Fail operation with not permitted authorization scope Get Fail operation Log Trying to perform a GET. This method should not be implemented. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail @@ -1603,21 +1771,24 @@ Get Fail operation Set Global Variable ${response} ${outputResponse} Put Fail operation log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Fail operation log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Fail operation log Trying to perform a DELETE. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response @@ -1625,7 +1796,8 @@ Delete Fail operation Post Create subscription Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json @@ -1645,6 +1817,7 @@ Post Create subscription - DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${VNFM_DUPLICATION} == 0 VNFM is not permitting duplication. Skipping the test Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json @@ -1665,6 +1838,7 @@ Post Create subscription - NO-DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${VNFM_DUPLICATION} == 1 VNFM permits duplication. Skipping the test Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/lccnSubscriptionRequest.json @@ -1683,7 +1857,8 @@ Post Create subscription - NO-DUPLICATION Get subscriptions Log Get the list of active subscriptions - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response @@ -1693,7 +1868,8 @@ Get subscriptions Get subscriptions with nextpage_opaque_marker parameter Log Get next page of subscriptions - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query using the URI provided in the previous GET request and validate response @@ -1704,6 +1880,7 @@ Get subscriptions with nextpage_opaque_marker parameter Get subscriptions - filter Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${POS_filter_subscription} @@ -1712,6 +1889,7 @@ Get subscriptions - filter Get subscriptions - invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${NEG_filter_subscription} ${outputResponse}= Output response @@ -1748,7 +1926,8 @@ Post Create subscription with permitted authorization scope Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/lccnSubscriptionRequest.json @@ -1768,7 +1947,8 @@ Post Create subscription with not permitted authorization scope Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/lccnSubscriptionRequest.json @@ -1786,7 +1966,8 @@ Post Create subscription with not permitted authorization scope Clear Requests ${callback_endpoint} PUT subscriptions log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions @@ -1794,7 +1975,8 @@ PUT subscriptions Set Global Variable ${response} ${outputResponse} PATCH subscriptions log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions @@ -1802,7 +1984,8 @@ PATCH subscriptions Set Global Variable ${response} ${outputResponse} DELETE subscriptions log Trying to perform a DELETE. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions @@ -1810,7 +1993,8 @@ DELETE subscriptions Set Global Variable ${response} ${outputResponse} Post Create Individual subscription log Trying to perform a POST. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} @@ -1818,7 +2002,8 @@ Post Create Individual subscription Set Global Variable ${response} ${outputResponse} Get Individual subscription log Trying to get information about an individual subscription - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -1828,7 +2013,8 @@ Get Individual subscription with permitted authorization scope log Trying to get information about an individual subscription with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -1837,14 +2023,16 @@ Get Individual subscription with not permitted authorization scope log Trying to get information about an individual subscription with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Put Individual subscription log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} @@ -1852,7 +2040,8 @@ Put Individual subscription Set Global Variable ${response} ${outputResponse} Patch Individual subscription log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} @@ -1860,7 +2049,8 @@ Patch Individual subscription Set Global Variable ${response} ${outputResponse} Delete Individual subscription log Try to delete an individual subscription - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${Authorization_Token}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -1868,16 +2058,19 @@ Delete Individual subscription Put Notification subscription log Trying to perform a PUT. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Put ${callback_endpoint} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Patch Notification subscription log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Patch ${callback_endpoint} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Delete Notification subscription log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Delete ${callback_endpoint} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -2113,7 +2306,8 @@ Match the VNF LCM Operation Occurence Response Attributes with Descriptors POST Change Current VNF Package Task Log Trying to change current VNF package task. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/changeCurrentVnfPkgRequest.json @@ -2126,7 +2320,8 @@ POST Change Current VNF Package Task with permitted authorization scope Log Trying to change current VNF package task with permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${CHANGE_VNFPKG_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/changeCurrentVnfPkgRequest.json @@ -2139,7 +2334,8 @@ POST Change Current VNF Package Task with not permitted authorization scope Log Trying to change current VNF package task with not permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${CHANGE_VNFPKG_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/changeCurrentVnfPkgRequest.json @@ -2150,6 +2346,7 @@ POST Change Current VNF Package Task with not permitted authorization scope GET Change Current VNF Package Task log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg ${outputResponse}= Output response @@ -2157,6 +2354,7 @@ GET Change Current VNF Package Task PUT Change Current VNF Package Task log Trying to perform a PUT. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg ${outputResponse}= Output response @@ -2164,6 +2362,7 @@ PUT Change Current VNF Package Task PATCH Change Current VNF Package Task log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg ${outputResponse}= Output response @@ -2171,6 +2370,7 @@ PATCH Change Current VNF Package Task DELETE Change Current VNF Package Task log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg ${outputResponse}= Output response @@ -2182,7 +2382,8 @@ Check HTTP Location Header Contains URI of Created Resource POST Create VNF Snapshot Task Log Trying to request a snapshot of a VNF instance - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/CreateVnfSnapshotRequest.json @@ -2193,7 +2394,8 @@ POST Create VNF Snapshot Task POST Create VNF Snapshot Task NOT SUPPORTED Log Trying to request a snapshot of a VNF instance for which task resource does not exist - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/CreateVnfSnapshotRequest.json @@ -2204,7 +2406,8 @@ POST Create VNF Snapshot Task NOT SUPPORTED POST Create VNF Snapshot Task VNF_NOT_INSTANTIATED Log Trying to request a snapshot of a VNF instance which is in NOT_INSTANTIATED state - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/CreateVnfSnapshotRequest.json @@ -2215,7 +2418,8 @@ POST Create VNF Snapshot Task VNF_NOT_INSTANTIATED POST Create VNF Snapshot Task INVALID IDENTIFIER Log Trying to request a snapshot of a VNF instance with invalid "Individual VNF Snapshot" resource identifier - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/CreateVnfSnapshotRequest.json @@ -2228,7 +2432,8 @@ POST Create VNF Snapshot Task with permitted authorization scope Log Trying to request a snapshot of a VNF instance with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${CREATE_SNAPSHOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/CreateVnfSnapshotRequest.json @@ -2241,7 +2446,8 @@ POST Create VNF Snapshot Task with not permitted authorization scope Log Trying to request a snapshot of a VNF instance with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${CREATE_SNAPSHOT_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/CreateVnfSnapshotRequest.json @@ -2252,6 +2458,7 @@ POST Create VNF Snapshot Task with not permitted authorization scope GET Create VNF Snapshot Task log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${outputResponse}= Output response @@ -2259,6 +2466,7 @@ GET Create VNF Snapshot Task PUT Create VNF Snapshot Task log Trying to perform a PUT. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${outputResponse}= Output response @@ -2273,6 +2481,7 @@ PATCH Create VNF Snapshot Task DELETE Create VNF Snapshot Task log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${outputResponse}= Output response @@ -2280,7 +2489,8 @@ DELETE Create VNF Snapshot Task POST Revert to VNF Snapshot Task Log Trying to initiate revert to VNF snapshot task. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/RevertToVnfSnapshotRequest.json @@ -2291,7 +2501,8 @@ POST Revert to VNF Snapshot Task POST Revert to VNF Snapshot Task NOT SUPPORTED Log Trying to revert to a snapshot of a VNF instance for which task resource does not exist - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/RevertToVnfSnapshotRequest.json @@ -2302,7 +2513,8 @@ POST Revert to VNF Snapshot Task NOT SUPPORTED POST Revert to VNF Snapshot Task VNF_NOT_INSTANTIATED Log Trying to revert to a snapshot of a VNF instance which is in NOT_INSTANTIATED state - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/RevertToVnfSnapshotRequest.json @@ -2313,6 +2525,7 @@ POST Revert to VNF Snapshot Task VNF_NOT_INSTANTIATED GET Revert to VNF Snapshot Task log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot ${outputResponse}= Output response @@ -2320,6 +2533,7 @@ GET Revert to VNF Snapshot Task PUT Revert to VNF Snapshot Task log Trying to perform a PUT. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot ${outputResponse}= Output response @@ -2327,6 +2541,7 @@ PUT Revert to VNF Snapshot Task PATCH Revert to VNF Snapshot Task log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot ${outputResponse}= Output response @@ -2334,6 +2549,7 @@ PATCH Revert to VNF Snapshot Task DELETE Revert to VNF Snapshot Task log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot ${outputResponse}= Output response @@ -2343,7 +2559,8 @@ POST Revert to VNF Snapshot Task with permitted authorization scope Log Trying to initiate revert to VNF snapshot task with permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${REVERT_TO_SNAPSHOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/RevertToVnfSnapshotRequest.json @@ -2356,7 +2573,8 @@ POST Revert to VNF Snapshot Task with not permitted authorization scope Log Trying to initiate revert to VNF snapshot task with not permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${REVERT_TO_SNAPSHOT_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/RevertToVnfSnapshotRequest.json @@ -2367,7 +2585,8 @@ POST Revert to VNF Snapshot Task with not permitted authorization scope POST Create a new VNF Snapshot Log Create VNF snapshot by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/CreateVnfSnapshotInfoRequest.json @@ -2378,7 +2597,8 @@ POST Create a new VNF Snapshot GET multiple VNF Snapshots Log Query VNF The GET method queries information about multiple VNF snapshots. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots @@ -2387,7 +2607,8 @@ GET multiple VNF Snapshots GET multiple VNF Snapshots with bad attribute Log Query VNF The GET method queries information about multiple VNF snapshots. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?attribute_not_exist=some_value @@ -2396,7 +2617,8 @@ GET multiple VNF Snapshots with bad attribute GET multiple VNF Snapshots with bad filter Log Query VNF The GET method queries information about multiple VNF snapshots. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?${NEG_FILTER_snapshot} @@ -2405,7 +2627,8 @@ GET multiple VNF Snapshots with bad filter GET multiple VNF Snapshots using filter Log Query VNF The GET method queries information about multiple VNF snapshots. - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?${POS_FILTER_snapshot} @@ -2415,6 +2638,7 @@ GET multiple VNF Snapshots using filter GET multiple VNF Snapshots with all_fields attribute selector Log Query status information about multiple VNF snapshots, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?all_fields ${output}= Output response @@ -2423,6 +2647,7 @@ GET multiple VNF Snapshots with all_fields attribute selector GET multiple VNF Snapshots with exclude_default attribute selector Log Query status information about multiple VNF snapshots using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?exclude_default ${output}= Output response @@ -2431,6 +2656,7 @@ GET multiple VNF Snapshots with exclude_default attribute selector GET multiple VNF Snapshots with fields attribute selector Log Query status information about multiple VNF snapshots, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=${fields_snapshot} ${output}= Output response @@ -2439,6 +2665,7 @@ GET multiple VNF Snapshots with fields attribute selector GET multiple VNF Snapshots with exclude_default and fields attribute selector Log Query status information about multiple VNF snapshots, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?fields=${fields_snapshot}&exclude_default ${output}= Output response @@ -2447,6 +2674,7 @@ GET multiple VNF Snapshots with exclude_default and fields attribute selector GET multiple VNF Snapshots with exclude_fields attribute selector Log Query status information about multiple VNF snapshots, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots?exclude_fields=${fields_snapshot} ${output}= Output response @@ -2464,7 +2692,8 @@ Check HTTP Response Header Contains Link PUT VNF Snapshots log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots @@ -2473,7 +2702,8 @@ PUT VNF Snapshots PATCH VNF Snapshots Log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -2489,7 +2719,8 @@ POST Create a new VNF Snapshot with permitted authorization scope Log Create VNF snapshot by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template} = Get File jsons/CreateVnfSnapshotInfoRequest.json @@ -2502,7 +2733,8 @@ POST Create a new VNF Snapshot with not permitted authorization scope Log Create VNF snapshot by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template} = Get File jsons/CreateVnfSnapshotInfoRequest.json @@ -2513,7 +2745,8 @@ POST Create a new VNF Snapshot with not permitted authorization scope POST individual VNF Snapshot log Trying to perform a POST. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} @@ -2522,7 +2755,8 @@ POST individual VNF Snapshot GET individual VNF Snapshot log Trying to get information about an individual VNF snapshot - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} @@ -2531,7 +2765,8 @@ GET individual VNF Snapshot GET individual VNF Snapshot with invalid URI log Trying to get information about an individual VNF snapshot - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${invalidVnfSnapshotInfoId} @@ -2540,7 +2775,8 @@ GET individual VNF Snapshot with invalid URI PUT individual VNF Snapshot log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} @@ -2549,7 +2785,8 @@ PUT individual VNF Snapshot PATCH individual VNF Snapshot log Trying to perform a PATCH to modify individual VNF snapshot - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Set Headers {"If-Match": "${original_etag}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -2561,7 +2798,8 @@ PATCH individual VNF Snapshot PATCH individual VNF Snapshot - ETag mismatch log Trying to perform a PATCH to modify individual VNF snapshot - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Set Headers {"If-Match": "${invalid_etag}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -2573,7 +2811,8 @@ PATCH individual VNF Snapshot - ETag mismatch DELETE individual VNF Snapshot log Trying to DELETE an individual VNF Snapshot - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} @@ -2582,7 +2821,8 @@ DELETE individual VNF Snapshot DELETE individual VNF Snapshot - CONFLICT log Trying to DELETE an individual VNF Snapshot that is already in use by another operation - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId_InUse} @@ -2593,7 +2833,8 @@ GET individual VNF Snapshot with permitted authorization scope log Trying to get information about an individual VNF snapshot with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} @@ -2604,7 +2845,8 @@ GET individual VNF Snapshot with not permitted authorization scope log Trying to get information about an individual VNF snapshot with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} @@ -2623,7 +2865,8 @@ Check Postcondition VNF Snapshot Resource Existence POST VNF State Snapshot log Trying to perform a POST. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot @@ -2641,7 +2884,8 @@ GET VNF State Snapshot - Complete GET VNF State Snapshot - Range Request Pass Execution If ${VNFM_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. log Trying to get information about an VNF State Snapshot using a range request - Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Range":"${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot @@ -2653,6 +2897,7 @@ GET VNF State Snapshot - Invalid Range Pass Execution If ${VNFM_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. log Trying to get information about a VNF State Snapshot with invalid range Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Range":"${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot @@ -2663,6 +2908,7 @@ GET VNF State Snapshot - Invalid Range GET VNF State Snapshot - Conflict in State Log Trying to get information about a VNF State Snapshot whose creation process is not completed Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId_creationIncomplete}/vnf_state_snapshot ${outputResponse}= Output response @@ -2671,6 +2917,7 @@ GET VNF State Snapshot - Conflict in State GET VNF State Snapshot - Complete with permitted authorization scope log Trying to fetch the complete contents of an VNF State Snapshot with permitted authorization scope Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Version": "${API_VERSION}"} ${scopeValue}= Create Dictionary scopeValue=${VNF_STATE_SNAPSHOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -2681,6 +2928,7 @@ GET VNF State Snapshot - Complete with permitted authorization scope GET VNF State Snapshot - Complete with not permitted authorization scope log Trying to fetch the complete contents of an VNF State Snapshot with not permitted authorization scope Set Headers {"Accept":"${ACCEPT_OCTET}"} + Set Headers {"Version": "${API_VERSION}"} ${scopeValue}= Create Dictionary scopeValue=${VNF_STATE_SNAPSHOT_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -2690,7 +2938,8 @@ GET VNF State Snapshot - Complete with not permitted authorization scope PUT VNF State Snapshot log Trying to perform a PUT. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot @@ -2699,7 +2948,8 @@ PUT VNF State Snapshot PATCH VNF State Snapshot log Trying to perform a PATCH. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot @@ -2708,7 +2958,8 @@ PATCH VNF State Snapshot DELETE VNF State Snapshot log Trying to perform a DELETE. This method should not be implemented - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot ${outputResponse}= Output response @@ -2717,6 +2968,7 @@ DELETE VNF State Snapshot POST Select VNF Deployable Modules log Trying to select deployable modules of VNF instance Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/SelectVnfDeployableModulesRequest.json @@ -2728,6 +2980,7 @@ POST Select VNF Deployable Modules POST Select VNF Deployable Modules Not Existing log Trying to select deployable modules of VNF instance Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/SelectVnfDeployableModulesRequest.json @@ -2739,6 +2992,7 @@ POST Select VNF Deployable Modules Not Existing POST Select VNF Deployable Modules with conflict log Trying to select deployable modules of VNF instance. Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/SelectVnfDeployableModulesRequest.json @@ -2750,6 +3004,7 @@ POST Select VNF Deployable Modules with conflict GET Select VNF Deployable Modules log Trying to perform a GET. This method should not be implemented + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/select_depl_mods ${outputResponse}= Output response @@ -2758,6 +3013,7 @@ GET Select VNF Deployable Modules PUT Select VNF Deployable Modules log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/select_depl_mods @@ -2767,6 +3023,7 @@ PUT Select VNF Deployable Modules PATCH Select VNF Deployable Modules log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/select_depl_mods @@ -2776,6 +3033,7 @@ PATCH Select VNF Deployable Modules DELETE Select VNF Deployable Modules log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/select_depl_mods ${outputResponse}= Output response @@ -2806,7 +3064,8 @@ JWT Encode [Return] ${encoded} POST instantiate individual vnfInstance - Unauthorized Log Trying to Instantiate a vnf Instance witout authorization - Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} ${body}= Get File jsons/instantiateVnfRequest.json Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index f0f6ae9d..a355b90b 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -51,6 +51,7 @@ ${VNF_STATE_SNAPSHOT_NOT_PERMITTED_SCOPE} vnflcm:v2:vnf_state_snapshot:invalid ${apiRoot} / ${apiName} vnflcm ${apiMajorVersion} v2 +${API_VERSION} 2.14.0 ${CancelMode} GRACEFUL ${VNFM_DUPLICATION} 0 -- GitLab From c7c2914f40c29fcbf1195cf8bc649b8faee4e823 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 10:41:05 +0500 Subject: [PATCH 089/141] test different methods of notification endpoint of VNF LCM as per SOL 003 specification version 5.1.1 --- .../NotificationEndpoint.robot | 79 ++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot index 9dcd95dd..687c9820 100644 --- a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot @@ -43,6 +43,50 @@ VNF Identifier Deletion Notification ... Post-Conditions: none Post VNF LCM Operation Occurrence Notification Check HTTP Response Status Code Is 204 +Test the Notification Endpoint - Successful + [Documentation] Test ID: 7.3.1.36.4 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.4.20.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.1.36.5 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.4.20.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.1.36.6 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.4.20.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.1.36.7 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.4.20.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 *** Keywords *** Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT_JSON}"} @@ -92,4 +136,37 @@ Post VNF Identifier Deletion Notification ${body}= Format String ${template} subscriptionId=${subscriptionId} vnfInstanceId=${vnfInstanceId} Post ${callbackResp} ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Set Global Variable ${response} ${outputResponse} +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PUT notification endpoint + Log Trying to perform a PUT. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PATCH notification endpoint + Log Trying to perform a PATCH. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + Log Trying to perform a DELETE. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file -- GitLab From 67d4b229632c73e0666f5c55b02e203038a523a1 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 3 Jan 2025 16:51:44 +0500 Subject: [PATCH 090/141] prevent race conditions in checking notifications as per Tacker feedback --- .../ChangeExternalVNFConnectivityWorkflow.robot | 2 +- .../ChangeVNFFlavourWorkflow.robot | 2 +- .../VNFLifecycleManagement-API/HealVNFWorkflow.robot | 2 +- .../InstantiateVNFTaskWorkflow.robot | 2 +- .../OperateVNFWorkflow.robot | 2 +- .../RetryOperationWorkflow.robot | 10 +++++++--- .../RollBackOperationWorkflow.robot | 10 +++++++--- .../ScaleVNFToLevelWorkflow.robot | 2 +- .../VNFLifecycleManagement-API/ScaleVNFWorkflow.robot | 2 +- .../TerminateVNFWorkflow.robot | 2 +- .../environment/variables.txt | 8 ++++++++ 11 files changed, 30 insertions(+), 14 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot index fa516317..45405317 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot @@ -43,4 +43,4 @@ Check Postcondition VNF Change Ext Connectivity Check Operation Notification For Change Ext Connectivity [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file + Run Keyword If ${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'COMPLETED') Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot index 60983b85..753f010f 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot @@ -47,4 +47,4 @@ Check Postcondition VNF Flavor Changed Check Operation Notification For Change Flavour [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file + Run Keyword If ${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'COMPLETED') Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot index 9312657a..7ea6deba 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot @@ -40,4 +40,4 @@ Check Postcondition VNF Heal Check Operation Notification For Heal [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file + Run Keyword If ${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'COMPLETED') Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot index bec565b1..e243b7ea 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot @@ -101,7 +101,7 @@ Send VNF Instantiation Request with attribute targetScaleLevelInfo Check Operation Notification For Instantiation [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} + Run Keyword If ${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'COMPLETED') Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} Initialize System Create Sessions diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot index 0049988e..def9de8d 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot @@ -45,4 +45,4 @@ Check Postcondition VNF OPERATE Check Operation Notification For Operate [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file + Run Keyword If ${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'COMPLETED') Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot index 1311ca85..3202113a 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot @@ -36,8 +36,8 @@ Retry VNF LCM Operation - Unsuccessful ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state Send Retry Operation Request Check HTTP Response Status Code Is 202 - Check Operation Notification For Retry PROCESSING - Check Operation Notification For Retry FAILED_TEMP + Check Operation Notification For Retry FAILED TEMP PROCESSING + Check Operation Notification For Retry FAILED TEMP FAILED_TEMP Check Postcondition VNF Retry Unsuccessful *** Keywords *** @@ -53,4 +53,8 @@ Check Postcondition VNF Retry Unsuccessful Check Operation Notification For Retry [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file + Run Keyword If ${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'COMPLETED') Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} + +Check Operation Notification For Retry FAILED TEMP + [Arguments] ${status} + Run Keyword If ${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'FAILED_TEMP') Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot index 3a1df1b1..2bd63176 100644 --- a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot @@ -38,8 +38,8 @@ Rollback VNF LCM Operation - Unsuccessful ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state Send Roll back Operation Request Check HTTP Response Status Code Is 202 - Check Operation Notification For Roll Back ROLLING_BACK - Check Operation Notification For Roll Back FAILED_TEMP + Check Operation Notification For Roll Back FAILED TEMP ROLLING_BACK + Check Operation Notification For Roll Back FAILED TEMP FAILED_TEMP Check Postcondition VNF Roll Back UnSuccessful *** Keywords *** @@ -59,4 +59,8 @@ Check Postcondition VNF Roll Back Unsuccessful Check Operation Notification For Roll Back [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file + Run Keyword If ${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'ROLLED_BACK') Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} + +Check Operation Notification For Roll Back FAILED TEMP + [Arguments] ${status} + Run Keyword If ${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'FAILED_TEMP') Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot index ec04d753..62b9f62a 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot @@ -50,4 +50,4 @@ Compare ScaleInfos Check Operation Notification For Scale [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file + Run Keyword If ${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'COMPLETED') Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot index bc4b61b8..5aa1fe70 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot @@ -52,4 +52,4 @@ Compare ScaleInfos Check Operation Notification For Scale [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file + Run Keyword If ${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'COMPLETED') Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot index 3aaed930..03a4f310 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot @@ -34,4 +34,4 @@ Check Postcondition VNF Terminate Check Operation Notification For Terminate [Arguments] ${status} - Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file + Run Keyword If ${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'COMPLETED') Check Operation Notification VnfLcmOperationOccurrenceNotification ${status} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index a355b90b..ddf67f75 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -12,6 +12,14 @@ ${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${AUTH_USAGE} 1 ${CONTENT_TYPE_PATCH} application/merge-patch+json +################################################################################################ +##### THIS VARIABLE BELOW ALLOWS TO SKIP INTERMEDIATE LIFEFYCLE OP OCC INTERMEDIATE CHECKS ##### +##### IT IS INTENDED TO BE A KNOWN DEVIATION FROM STANDARDS ##### + +${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} 1 + +################################################################################################ + ${INSTANTIATE_PERMITTED_SCOPE} vnflcm:v2:instantiate ${SCALE_PERMITTED_SCOPE} vnflcm:v2:scale ${SCALE_TO_LEVEL_PERMITTED_SCOPE} vnflcm:v2:scale_to_level -- GitLab From 41df6a50e8ead630ade49a437fdbaca89aa814d9 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 3 Jan 2025 17:09:25 +0500 Subject: [PATCH 091/141] Editorial Change: Fix description in JSON schema --- .../schemas/LccnSubscription.schema.json | 2 +- .../schemas/LccnSubscriptions.schema.json | 2 +- .../schemas/Subscription.schema.json | 2 +- .../schemas/VnfLcmOpOcc.schema.json | 6 +++--- .../schemas/VnfLcmOpOccs.schema.json | 6 +++--- ...fLcmOperationOccurrenceNotification.schema.json | 6 +++--- .../schemas/VnfSnapshotInfo.schema.json | 14 +++++++------- .../VnfSnapshotInfoModifications.schema.json | 12 ++++++------ .../schemas/VnfSnapshotsInfo.schema.json | 14 +++++++------- .../schemas/subscriptions.schema.json | 2 +- .../schemas/vnfInstance.schema.json | 14 +++++++------- .../schemas/vnfInstances.schema.json | 14 +++++++------- 12 files changed, 47 insertions(+), 47 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json index 4f1ec74e..3091d625 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json @@ -147,7 +147,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json index 478f98f4..86ae2ccb 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscriptions.schema.json @@ -149,7 +149,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable module\" LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json index 4f1ec74e..3091d625 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json @@ -147,7 +147,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json index 21a6788d..4a2d4525 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json @@ -60,7 +60,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -818,7 +818,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -851,7 +851,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json index ce20e18b..72ea4628 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json @@ -62,7 +62,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -820,7 +820,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -853,7 +853,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index 8fc9ea91..f7c51487 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -61,7 +61,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -856,7 +856,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -889,7 +889,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json index 3b8b3ae2..49929f8d 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json @@ -49,7 +49,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -779,7 +779,7 @@ "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -989,7 +989,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1636,7 +1636,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1669,7 +1669,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2488,7 +2488,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2778,7 +2778,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json index 5bb09931..5d2de07c 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json @@ -41,7 +41,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -771,7 +771,7 @@ "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -1628,7 +1628,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1661,7 +1661,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2480,7 +2480,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2770,7 +2770,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json index 70ac1b3a..a043714c 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json @@ -51,7 +51,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -781,7 +781,7 @@ "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -991,7 +991,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1638,7 +1638,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1671,7 +1671,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2490,7 +2490,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2780,7 +2780,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json index 478f98f4..5e8c501c 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json @@ -149,7 +149,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the ΓÇ£Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modulesΓÇ¥ LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index b5e1046d..025daa70 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -729,7 +729,7 @@ "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -939,7 +939,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1586,7 +1586,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1619,7 +1619,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2438,7 +2438,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2728,7 +2728,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index 275d26c6..145b368d 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -1,7 +1,7 @@ { "type": "array", "items": { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -731,7 +731,7 @@ "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -941,7 +941,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1588,7 +1588,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1621,7 +1621,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2440,7 +2440,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2730,7 +2730,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", -- GitLab From 4200f15300e69e934c24bdeaa45f0fb8e847360a Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 3 Jan 2025 17:10:46 +0500 Subject: [PATCH 092/141] update API version of SOL 001 descriptors --- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index 250f1c70..e6fab7f7 100644 --- a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -44,7 +44,7 @@ node_types: type: list entry_schema: type: string - default: [ 'etsivnfm:v4.5.1' ] + default: [ 'etsivnfm:v5.1.1' ] interfaces: Vnflcm: type: "tosca.interfaces.nfv.Vnflcm" -- GitLab From bfd8bdb5b342a8926dad80a2c1e619405a7771ee Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 17 Jan 2025 15:48:51 +0500 Subject: [PATCH 093/141] implement POST Create a new vnfinstance for not Enabled stated of vnfd as per Tacker feedback ap 6 --- .../VNFLifecycleManagement-API/VNFInstances.robot | 15 ++++++++++++++- .../VnfLcmMntOperationKeywords.robot | 14 +++++++++++++- .../environment/variables.txt | 1 + 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index f2b3150a..d58d2eaf 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -252,4 +252,17 @@ POST Create a new vnfInstance with not permitted authorization scope ... Post-Conditions: VNF instance created POST Create a new vnfInstance with not permitted authorization scope Check HTTP Response Status Code Is 403 - Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Create a new vnfInstance - UNPROCESSABLE CONTENT + [Documentation] Test ID: 7.3.1.1.19 + ... Test title: POST Create a new vnfInstance - UNPROCESSABLE CONTENT + ... Test objective: The objective is to test that a new VNF instance resource is not created when vnfdId of the referenced VNF package is not in ENABLED state or does not exist. + ... Pre-conditions: none + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [2] v5.1.1 + ... Config ID: Config_prod_VE + ... Applicability: vnfdId of the referenced VNF package is not in ENABLED state or does not exist. + ... Post-Conditions: VNF instance not created + POST Create a new vnfInstance with Invalid vnfdId + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 56d9aea3..73da4236 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -3070,4 +3070,16 @@ POST instantiate individual vnfInstance - Unauthorized ${body}= Get File jsons/instantiateVnfRequest.json Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Set Global Variable ${response} ${outputResponse} + +POST Create a new vnfInstance with Invalid vnfdId + Log Create VNF instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances with invalid vnfdId + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/createVnfRequest.json + ${body}= Format String ${template} vnfdId=${invalidVnfdId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index ddf67f75..784365d9 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -65,6 +65,7 @@ ${CancelMode} GRACEFUL ${VNFM_DUPLICATION} 0 ${invalid_etag} invalid etag +${invalidVnfdId} vnfdId-in-DISABLED-state-or-DNE ${SYNC_MODE} 0 -- GitLab From d1a1d34dce6393840c2f747e0de89f36e853f863 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 22 Jan 2025 16:40:32 +0500 Subject: [PATCH 094/141] implement test cases for FEAT 35 scale VNF vertically --- .../ScaleVNFTask.robot | 42 +++++++++++++++++++ .../VnfLcmMntOperationKeywords.robot | 33 +++++++++++++++ .../scaleVnfScaleVerticalComputeRequest.json | 18 ++++++++ ...aleVnfScaleVerticalOscontainerRequest.json | 25 +++++++++++ .../scaleVnfScaleVerticalStorageRequest.json | 12 ++++++ 5 files changed, 130 insertions(+) create mode 100644 SOL003/VNFLifecycleManagement-API/jsons/scaleVnfScaleVerticalComputeRequest.json create mode 100644 SOL003/VNFLifecycleManagement-API/jsons/scaleVnfScaleVerticalOscontainerRequest.json create mode 100644 SOL003/VNFLifecycleManagement-API/jsons/scaleVnfScaleVerticalStorageRequest.json diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index c24b7796..e067cc16 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -122,6 +122,48 @@ POST Scale a vnfInstance with not permitted authorization scope POST Scale vnfInstance with not permitted authorization scope Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails + +POST Scale a vnfInstance Scale Vertical - Compute + [Documentation] Test ID: 7.3.1.4.10 + ... Test title: POST Scale a vnfInstance Scale Vertical - Compute + ... Test objective: The objective is to scale a VNF instance with vertical scaling in terms of compute + ... Pre-conditions: none + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Scale vnfInstance Scale Vertical Compute + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Scale a vnfInstance Scale Vertical - Storage + [Documentation] Test ID: 7.3.1.4.11 + ... Test title: POST Scale a vnfInstance Scale Vertical - Storage + ... Test objective: The objective is to scale a VNF instance with vertical scaling in terms of storage + ... Pre-conditions: none + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Scale vnfInstance Scale Vertical Storage + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Scale a vnfInstance Scale Vertical - Oscontainer + [Documentation] Test ID: 7.3.1.4.12 + ... Test title: POST Scale a vnfInstance Scale Vertical - Oscontainer + ... Test objective: The objective is to scale a VNF instance with vertical scaling in terms of oscontainer + ... Pre-conditions: none + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Scale vnfInstance Scale Vertical Oscontainer + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 73da4236..38829d5c 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -3083,3 +3083,36 @@ POST Create a new vnfInstance with Invalid vnfdId Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Scale vnfInstance Scale Vertical Compute + Log Trying to scale a vnf Instance vertically by scaling the compute + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get File jsons/scaleVnfScaleVerticalComputeRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Scale vnfInstance Scale Vertical Storage + Log Trying to scale a vnf Instance vertically by scaling the storage + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get File jsons/scaleVnfScaleVerticalStorageRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Scale vnfInstance Scale Vertical Oscontainer + Log Trying to scale a vnf Instance vertically by scaling the oscontainer + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${body}= Get File jsons/scaleVnfScaleVerticalOscontainerRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfScaleVerticalComputeRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfScaleVerticalComputeRequest.json new file mode 100644 index 00000000..b0d32208 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfScaleVerticalComputeRequest.json @@ -0,0 +1,18 @@ +{{ + "type": "SCALE_VERTICAL", + "resourceCapacityDefinition": [ + { + "type": "COMPUTE", + "virtualComputeDescData": { + "resourceTemplateId": "string", + "numVirtualCpu": 4, + "virtualMemSize": 8.0, + "sizeOfVirtualDisk": 10.0, + "hugePagesRequirements": { + "hugepage_size": 1024, + "requested_size": 1024 + } + } + } + ] +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfScaleVerticalOscontainerRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfScaleVerticalOscontainerRequest.json new file mode 100644 index 00000000..31274ae6 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfScaleVerticalOscontainerRequest.json @@ -0,0 +1,25 @@ +{{ + "type": "SCALE_VERTICAL", + "resourceCapacityDefinition": [{ + "type": "OSCONTAINER", + "osContainerDescData":[ + { + "resourceTemplateId":"string", + "requestedCpuResources": 1, + "requestedMemoryResources": 1024, + "requestedEphemeralStorageResources":1024, + "extendedResourceRequests": { + "extended_resource":"string", + "amount":1 + }, + "cpuResourceLimit": 1, + "memoryResourceLimit": 1024, + "ephemeralStorageResourceLimit":1024, + "hugePageResources":{ + "hugepage_size":1024, + "requested_size":1024 + } + }] + } + ] +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfScaleVerticalStorageRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfScaleVerticalStorageRequest.json new file mode 100644 index 00000000..c07a4b68 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfScaleVerticalStorageRequest.json @@ -0,0 +1,12 @@ +{{ + "type": "SCALE_VERTICAL", + "resourceCapacityDefinition": [{ + "type": "STORAGE", + "virtualStorageDescData":[ + { + "resourceTemplateId":"string", + "sizeOfStorage": 10.0 + } + ] + }] +}} \ No newline at end of file -- GitLab From 6c2b0ee20e6ba8574b3369748860e860db7ff837 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 23 Jan 2025 11:05:19 +0500 Subject: [PATCH 095/141] Editorial change: Handle Mojibake in Response Bodies --- .../schemas/LccnSubscription.schema.json | 2 +- .../schemas/Subscription.schema.json | 2 +- .../schemas/VnfLcmOpOcc.schema.json | 10 +++++----- .../schemas/VnfLcmOpOccs.schema.json | 10 +++++----- ...fLcmOperationOccurrenceNotification.schema.json | 6 +++--- .../schemas/VnfSnapshotInfo.schema.json | 14 +++++++------- .../VnfSnapshotInfoModifications.schema.json | 12 ++++++------ .../schemas/VnfSnapshotsInfo.schema.json | 14 +++++++------- .../schemas/subscriptions.schema.json | 2 +- .../schemas/vnfInstance.schema.json | 14 +++++++------- .../schemas/vnfInstances.schema.json | 14 +++++++------- 11 files changed, 50 insertions(+), 50 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json index 3091d625..0b5d13c5 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/LccnSubscription.schema.json @@ -147,7 +147,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json index 3091d625..0b5d13c5 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/Subscription.schema.json @@ -147,7 +147,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json index 4a2d4525..204ec7c8 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json @@ -60,7 +60,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -818,7 +818,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -851,7 +851,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1252,7 +1252,7 @@ "format": "date-time" }, "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: ΓÇó\tMGMT: coordination with other operation supporting management systems (e.g. EM) ΓÇó\tVNF: coordination with the VNF instance\n", + "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", "type": "string", "enum": [ "MGMT", @@ -1289,7 +1289,7 @@ "format": "date-time" }, "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: ΓÇó\tMGMT: coordination with other operation supporting management systems (e.g. EM) ΓÇó\tVNF: coordination with the VNF instance\n", + "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", "type": "string", "enum": [ "MGMT", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json index 72ea4628..f5312d87 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json @@ -62,7 +62,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -820,7 +820,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -853,7 +853,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1254,7 +1254,7 @@ "format": "date-time" }, "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: ΓÇó\tMGMT: coordination with other operation supporting management systems (e.g. EM) ΓÇó\tVNF: coordination with the VNF instance\n", + "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", "type": "string", "enum": [ "MGMT", @@ -1291,7 +1291,7 @@ "format": "date-time" }, "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: ΓÇó\tMGMT: coordination with other operation supporting management systems (e.g. EM) ΓÇó\tVNF: coordination with the VNF instance\n", + "description": "The endpoint type used by this coordination action. Valid values: •\tMGMT: coordination with other operation supporting management systems (e.g. EM) •\tVNF: coordination with the VNF instance\n", "type": "string", "enum": [ "MGMT", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index f7c51487..e989bd16 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -61,7 +61,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", @@ -856,7 +856,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -889,7 +889,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json index 49929f8d..ab546e44 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json @@ -49,7 +49,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatus\" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -779,7 +779,7 @@ "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPorts\" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -989,7 +989,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfo\" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1636,7 +1636,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1669,7 +1669,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2488,7 +2488,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfo\" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2778,7 +2778,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kind\" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json index 5d2de07c..20505f73 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotInfoModifications.schema.json @@ -41,7 +41,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatus\" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -771,7 +771,7 @@ "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPorts\" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -1628,7 +1628,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1661,7 +1661,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2480,7 +2480,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfo\" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2770,7 +2770,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kind\" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json index a043714c..81299d34 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json @@ -51,7 +51,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatus\" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -781,7 +781,7 @@ "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPorts\" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -991,7 +991,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfo\" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1638,7 +1638,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1671,7 +1671,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2490,7 +2490,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfo\" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2780,7 +2780,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kind\" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json index 5e8c501c..7c71150c 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json @@ -149,7 +149,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modulesΓÇ¥ LCM operation\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the \"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation\n", "type": "string", "enum": [ "INSTANTIATE", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index 025daa70..e41c3641 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatus\" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -729,7 +729,7 @@ "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPorts\" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -939,7 +939,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfo\" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1586,7 +1586,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1619,7 +1619,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2438,7 +2438,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfo\" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2728,7 +2728,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kind\" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index 145b368d..9bddafeb 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -1,7 +1,7 @@ { "type": "array", "items": { - "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance.\nNOTE:\tClause B.3.2 provides examples illustrating the relationship among the different run-time \n information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n\nNOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist between \n the previous and the newly referred VNF package, i.e. when the new VNFD is changed with \n respect to the previous VNFD in other aspects than merely referencing to other VNF software \n images. In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded \n VNF Package, the values of attributes in the VnfInstance that have corresponding attributes \n in the VNFD shall be kept in sync with the values in the VNFD.\nNOTE 2:\tETSI GS NFV-SOL 001 [14] 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 applicable \n to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, \n some are set prior to instantiation (are part of initial configuration) and can be modified later, \n and others can be set only after instantiation. The applicability of certain configuration may \n depend on the VNF and the required operation of the VNF at a certain point in time.\nNOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes \n of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared in the VNFD with a defined \n initial value. The defined initial values can be declared in the VNFD, and/or, in case of \"metadata\", \n obtained from the \"CreateVnfRequest\" structure. Child attributes of \"vnfConfigurableProperties\", \n \"metadata\" and \"extensions\" that have no defined initial value shall not be created, in order to be \n consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null \n values as deletion request.\nNOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a \n multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same \n VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed \n multi-site VL instance (refer to clause 5.5.3.3).\nNOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity, they shall \n not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\nNOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing \n the trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\nNOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatus\" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the \n VNF LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -731,7 +731,7 @@ "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.See note 7.\n", "type": "array", "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n \"extLinkPorts\" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -941,7 +941,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfo\" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4.\nIt shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1588,7 +1588,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceIdΓÇ¥ and \"cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1621,7 +1621,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2440,7 +2440,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the \"NetAttDefResourceInfo\" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2730,7 +2730,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute isNumOfInstancesClusterBased set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements.as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n \"kind\" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", -- GitLab From fb1907b94067f1983f9fb92af9efea4bee98a18d Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 6 Dec 2024 16:30:46 +0500 Subject: [PATCH 096/141] Update SOL003 document version in all testcases of VNF Lifecycle Operation Granting API --- .../Grants.robot | 24 +++++++++---------- .../IndividualGrant.robot | 14 +++++------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 577038a2..5bcb0a5a 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -22,7 +22,7 @@ Requests a grant for a particular VNF lifecycle operation - Synchronous mode ... Test title: Requests a grant for a particular VNF lifecycle operation - Synchronous mode ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation and perform a JSON schema validation on the returned grant data structure ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO can decide immediately what to respond to a grant request ... Post-Conditions: The grant information is available to the VNFM. @@ -36,7 +36,7 @@ Requests a grant for a particular VNF lifecycle operation - Asynchronous mode ... Test title: Requests a grant for a particular VNF lifecycle operation - Asynchronous mode ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation and perform a JSON schema validation on the returned grant data structure ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO can not decide immediately what to respond to a grant request ... Post-Conditions: The grant information is available to the VNFM. @@ -51,7 +51,7 @@ Requests a grant for a particular VNF lifecycle operation - Forbidden ... Test title: Requests a grant for a particular VNF lifecycle operation - Forbidden ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation and the grant is rejected ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ GET Grants - Method not implemented ... Test title: GET Grants - Method not implemented ... Test objective: The objective is to test that GET method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PUT Grants - Method not implemented ... Test title: PUT Grants - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ PATCH Grants - Method not implemented ... Test title: PATCH Grants - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ DELETE Grants - Method not implemented ... Test title: DELETE Grants - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: resources are not deleted @@ -112,7 +112,7 @@ Requests a grant for a particular VNF lifecycle operation - Synchronous mode usi ... Test title: Requests a grant for a particular VNF lifecycle operation - Synchronous mode using instantiationLevelId for Target size ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation and perform a JSON schema validation on the returned grant data structure ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO can decide immediately what to respond to a grant request ... Post-Conditions: The grant information is available to the VNFM. @@ -126,7 +126,7 @@ Requests a grant for a particular VNF lifecycle operation - Synchronous mode usi ... Test title: Requests a grant for a particular VNF lifecycle operation - Synchronous mode using targetScaleLevelInfo for Target size ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation and perform a JSON schema validation on the returned grant data structure ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO can decide immediately what to respond to a grant request ... Post-Conditions: The grant information is available to the VNFM. @@ -140,7 +140,7 @@ Requests a grant for a particular VNF lifecycle operation - Synchronous mode usi ... Test title: Requests a grant for a particular VNF lifecycle operation - Synchronous mode using with attribute addResources for Target size ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation and perform a JSON schema validation on the returned grant data structure ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO can decide immediately what to respond to a grant request ... Post-Conditions: The grant information is available to the VNFM. @@ -154,7 +154,7 @@ Requests a grant for a particular VNF lifecycle operation - Synchronous mode wit ... Test title: Requests a grant for a particular VNF lifecycle operation - Synchronous mode with permitted authorization scope ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation and perform a JSON schema validation on the returned grant data structure with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO can decide immediately what to respond to a grant request ... Post-Conditions: The grant information is available to the VNFM. @@ -168,7 +168,7 @@ Requests a grant for a particular VNF lifecycle operation - Synchronous mode wit ... Test title: Requests a grant for a particular VNF lifecycle operation - Synchronous mode with not permitted authorization scope ... Test objective: The objective is to request a grant for a particular VNF lifecycle operation and perform a JSON schema validation on the returned grant data structure with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO can decide immediately what to respond to a grant request ... Post-Conditions: The grant information is available to the VNFM. diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index 4ce3908d..2d00d0af 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -18,7 +18,7 @@ POST Individual Grant - Method not implemented ... Test title: POST Individual Grant - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ GET an individual grant - Successful ... Test title: GET an individual grant - Successful ... Test objective: The objective is to retrieve a grant for a particular VNF Lifecycle Operation. ... Pre-conditions: The grant information is available to the NFVO - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ GET an individual grant - Process ongoing ... Test title: GET an individual grant - Process ongoing ... Test objective: The objective is to retrieve a grant for a particular VNF lifecycle operation when process is ongoing and no grant is available yet. ... Pre-conditions: The process of creating the grant is ongoing, no grant is available yet. - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -59,7 +59,7 @@ GET an individual grant - grant rejected ... Test title: GET an individual grant - grant rejected ... Test objective: The objective is to retrieve a grant for a particular VNF Lifecycle Operation but error returned because grant has been rejected. ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ PUT an individual grant - Method not implemented ... Test title: PUT an individual grant - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ PATCH an individual grant - Method not implemented ... Test title: PATCH an individual grant - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -96,7 +96,7 @@ DELETE an individual grant - Method not implemented ... Test title: DELETE an individual grant - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Life cycle operation granting ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 173aa8e0838cc7a200b0ab894795efdd64b25785 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 18 Dec 2024 16:29:52 +0500 Subject: [PATCH 097/141] Editorial change: Format Jason schema --- .../schemas/grant.schema.json | 197 ++++++++++++++---- 1 file changed, 153 insertions(+), 44 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json b/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json index 1cf14247..59ecf5ef 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json +++ b/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json @@ -1,7 +1,12 @@ { "description": "This type represents a grant.\nNOTE 1: This interface allows to signal the use of multiple VIMs per VNF. The specification\n for managing the VNF internal VL requirements across multiple VIMs is supported via\n \"externally-managed internal VLs\" and \"multi-site connectivity services\".\nNOTE 2: Void. NOTE 3: The Grant response allows the NFVO to pass to the VNFM VIM assets related to the VNF \n package that is identified in the corresponding Grant request. Because only the operations\n InstantiateVnf, ChangeCurrentVnfPkg and the update of the vnfdId by PATCH can imply changes\n in the set of VIM assets, the NFVO shall not change this set in any other case. To signal the\n set of VIM assets, the following applies:\n a)\tIf the current LCM operation is InstantiateVnf, the NFVO shall send in the Grant response\n the full set of VIM assets related to the VNF package defined by the vnfdId in the related\n Grant request.\n b)\tIf the current LCM operation is ChangeCurrentVnfPkg, the NFVO shall send in the\n Grant response the full set of VIM assets related to the VNF package defined by the destVnfdId\n in the related Grant request.\n c)\tFor any other operation: If the set of VIM assets has changed since the end of the previous\n granted operation because a PATCH operation has changed the vnfdId between the previous granted\n operation and the operation to which the current granting exchange relates, the NFVO shall send\n in the Grant response the full set of VIM assets related to the VNF package defined by the vnfdId\n in the related Grant request. Otherwise, the NFVO shall either send in the Grant response the full\n set of VIM assets related to the VNF package defined by the vnfdId in the related Grant request, or\n shall not send any VIM assets at all.\n During each LCM operation occurrence other than a \"ChangeCurrentVnfPkg\" operation,\n the VIM assets that relate to the VNF package identified by the current value of\n the vnfdId attribute in the \"VnfInstance\" structure shall be used by the\n VNFM for newly created resources and updated resources.\nNOTE 4: The indication of externally-managed internal VLs is needed in case networks have been\n pre-configured for use with certain VNFs, for instance to ensure that these networks have\n certain properties such as security or acceleration features, or to address particular network\n topologies (e.g., multi-site connectivity). The present document assumes that externally-managed\n internal VLs are managed by the NFVO and created towards the VIM and WIM.\nNOTE 5: For any VNF lifecycle management operation request that allows to pass \"extVirtualLinks\" and/or\n \"extManagedVirtualLinks\" parameters, such as InstantiateVnf, ChangeVnfFlavour, ChangeExtVnfConnectivity or\n ChangeCurrentVnfPackage, the NFVO may provide the \"extVirtualLinks\" and/or \"extManagedVirtualLinks\" attributes\n in the Grant to override the values passed in these parameters previously in the associated VNF lifecycle\n management request, if the lifecycle management request has originated from the NFVO itself. The NFVO shall\n not provide the \"extVirtualLinks\" and/or \"extManagedVirtualLinks\" attributes in the Grant in case the LCM\n request did not originate from the NFVO itself or the granted LCM operation request does not allow to pass\n these parameters.\nNOTE 6: The NFVO shall set the value of the attribute by copying the value from the associated \n GrantRequest.\nNOTE 7: In case of granting an InstantiateVnf request that has originated from the NFVO and that \n did not contain the \"extVirtualLinks\" attribute, this attribute shall be set by the NFVO. \n Further in case of granting an InstantiateVnf request that has originated from the NFVO \n and that did not contain the \"extManagedVirtualLinks\" attribute, this attribute shall be \n set by the NFVO if there is the need to provide information about externally-managed virtual \n links.\nNOTE 8: The resulting \"extVirtualLinks\" or \"extManagedVirtualLinks\" information is calculated as follows: \n In a first step, the information passed in the related LCM operation is applied to the baseline\n information known from earlier LCM operation executions. In a second step, the information passed\n in the Grant is applied to the information resulting from the first step.\nNOTE 9: For resources related to ResourceDefinition whose VDU has the attribute \n isNumOfInstancesClusterBased set to TRUE, only one occurrence of the addResources, or \n tempResources or removeResources, or updateResources shall be included.\n", "type": "object", - "required": ["id", "vnfInstanceId", "vnfLcmOpOccId", "_links"], + "required": [ + "id", + "vnfInstanceId", + "vnfLcmOpOccId", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -21,7 +26,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -52,7 +59,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -83,7 +92,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n* NOTE 3: ETSI GS NFV-SOL 009 specifies the means to configure into the VNFM applicable VIM connection\n information via the \"NFV-MANO Configuration and Information Management\" interface.\n* NOTE 4: Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of\n the present document, as well as in-band, by means specified in the present document, care should be taken to\n avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -114,7 +125,10 @@ "items": { "description": "This type provides information regarding a resource zone.\n", "type": "object", - "required": ["id", "zoneId"], + "required": [ + "id", + "zoneId" + ], "properties": { "id": { "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", @@ -141,7 +155,9 @@ "items": { "description": "This type provides information regarding a resource zone group. A resource zone group is a group of one or more related resource zones which can be used in resource placement constraints. To fulfil such constraint, the NFVO may decide to place a resource into any zone that belongs to a particular group. NOTE: A resource zone group can be used to support overflow from one resource zone into another, in case a particular deployment supports only non-elastic resource zones.\n", "type": "object", - "required": ["zoneId"], + "required": [ + "zoneId" + ], "properties": { "zoneId": { "description": "References of identifiers of \"ZoneInfo\" structures, each of which provides information about a resource zone that belongs to this group.\n", @@ -160,7 +176,9 @@ "items": { "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted. It enables also referencing to a PaaS Service request definition which has been granted.\n", "type": "object", - "required": ["resourceDefinitionId"], + "required": [ + "resourceDefinitionId" + ], "properties": { "resourceDefinitionId": { "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", @@ -207,7 +225,9 @@ "items": { "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted. It enables also referencing to a PaaS Service request definition which has been granted.\n", "type": "object", - "required": ["resourceDefinitionId"], + "required": [ + "resourceDefinitionId" + ], "properties": { "resourceDefinitionId": { "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", @@ -254,7 +274,9 @@ "items": { "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted. It enables also referencing to a PaaS Service request definition which has been granted.\n", "type": "object", - "required": ["resourceDefinitionId"], + "required": [ + "resourceDefinitionId" + ], "properties": { "resourceDefinitionId": { "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", @@ -301,7 +323,9 @@ "items": { "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted. It enables also referencing to a PaaS Service request definition which has been granted.\n", "type": "object", - "required": ["resourceDefinitionId"], + "required": [ + "resourceDefinitionId" + ], "properties": { "resourceDefinitionId": { "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n", @@ -352,7 +376,10 @@ "items": { "description": "If the VIM requires the use of virtual compute resource flavours during compute resource instantiation, it is assumed that such flavours are selected or created by the NFVO based on the information in the virtual compute descriptor defined in the VNFD. This type defines the mapping between a virtual compute descriptor in the VNFD and the corresponding compute resource flavour managed by the NFVO in the VIM.\n", "type": "object", - "required": ["vnfdVirtualComputeDescId", "vimFlavourId"], + "required": [ + "vnfdVirtualComputeDescId", + "vimFlavourId" + ], "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -379,7 +406,10 @@ "items": { "description": "This type contains a mapping between a software image definition the VNFD and the corresponding software image managed by the NFVO in the VIM or CIR which is needed during compute resource instantiation.\nNOTE: For an OS container image, the value of this attribute is a string concatenating the name and tag of the\n image in the CIR separated by a colon ':' with no spaces, e.g. ΓÇ£dbImage:001ΓÇ¥.\n", "type": "object", - "required": ["vnfdSoftwareImageId", "vimSoftwareImageId"], + "required": [ + "vnfdSoftwareImageId", + "vimSoftwareImageId" + ], "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -445,7 +475,10 @@ "items": { "description": "This type provides a mapping between a VirtualStorageDesc in the VNFD and the corresponding virtual storage managed by the NFVO in the NFVI.\n", "type": "object", - "required": ["virtualStorageDescId", "storageClassName"], + "required": [ + "virtualStorageDescId", + "storageClassName" + ], "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -499,7 +532,9 @@ "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"], + "required": [ + "id" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -528,7 +563,11 @@ "items": { "description": "This type represents an external VL.\n* NOTE 1:\tA link port is not needed for an external CP instance that exposes a CP in the following cases:\n 1) For a VIP CP directly exposed as an external CP:\n 1.1) No dedicated IP address is allocated as VIP address, as indicated in the VNFD.\n 1.2) A dedicated IP address is allocated as VIP address, but the NFVO indicates that no port is needed\n (createExtLinkPort in VnfExtCpConfig set to false).\n 2) For a VIP CP exposed as an external CP via a floating IP address:\n 2.1) No dedicated IP address is allocated as VIP address, as indicated in the VNFD, and the VNFC CP\n associated to the VIP CP is also exposed via a floating IP address.\n 3) For a VIRTUAL CP exposed as an external CP.\n 4) For a VNFC CP exposed as an external CP in a secondary container cluster external network or a\n secondary container cluster internal network.\n\n* NOTE 2: An example of the network attachment definition resource when the container infrastructure service\n management is a Kubernetes┬« instance is a network attachment definition (NAD).\n", "type": "object", - "required": ["id", "resourceId", "extCps"], + "required": [ + "id", + "resourceId", + "extCps" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -552,7 +591,9 @@ "items": { "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for \n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only \n required to configure one cpConfig per cpdId, not per VNFC instance. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version.\n", "type": "object", - "required": ["cpdId"], + "required": [ + "cpdId" + ], "properties": { "cpdId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -565,13 +606,19 @@ "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { - "required": ["linkPortId"] + "required": [ + "linkPortId" + ] }, { - "required": ["cpProtocolData"] + "required": [ + "cpProtocolData" + ] }, { - "required": ["netAttDefResourceId"] + "required": [ + "netAttDefResourceId" + ] } ], "type": "object", @@ -602,7 +649,9 @@ "items": { "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", @@ -617,10 +666,14 @@ "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "properties": { @@ -632,7 +685,10 @@ "segmentationType": { "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values:\n -\tVLAN: the subport uses VLAN as encapsulation type.\n -\tINHERIT: the subport gets its segmentation type from the network it's connected to.\nThis attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", - "enum": ["VLAN", "INHERIT"] + "enum": [ + "VLAN", + "INHERIT" + ] }, "segmentationId": { "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", @@ -643,23 +699,34 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "oneOf": [ { - "required": ["fixedAddresses"] + "required": [ + "fixedAddresses" + ] }, { - "required": ["numDynamicAddresses"] + "required": [ + "numDynamicAddresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "fixedAddresses": { "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -706,12 +773,17 @@ "virtualCpAddress": { "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes┬« that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -739,14 +811,19 @@ "items": { "description": "This type represents an externally provided link port to be used to connect an external connection point to an external VL. * NOTE:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { @@ -803,14 +880,19 @@ "items": { "description": "This type represents a network attachment definition resource that provides the specification of the interface to be used to connect one or multiple connection points to a secondary container cluster network realizing a VL.\n", "type": "object", - "required": ["netAttDefResourceId", "resourceHandle"], + "required": [ + "netAttDefResourceId", + "resourceHandle" + ], "properties": { "netAttDefResourceId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { @@ -866,7 +948,11 @@ "items": { "description": "This type represents an externally-managed internal VL.\n* NOTE 1: It is only applicable if the externally-managed VL is realized by a secondary container cluster network. It shall\n not be present otherwise.\n* NOTE 2: A link port is not needed for a VNFC internal connection point connected to a secondary container cluster\n network.\n* NOTE 3: An example of the network attachment definition resource when the container infrastructure service\n management is a Kubernetes┬« instance is a network attachment definition (NAD).\n* NOTE 4: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, an \n instance of intCp need not be included for each VNFC instance as all instances would contain the same \n information. It is sufficient to include one intCp for the related CPD. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version\n", "type": "object", - "required": ["id", "vnfVirtualLinkDescId", "resourceId"], + "required": [ + "id", + "vnfVirtualLinkDescId", + "resourceId" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -894,14 +980,19 @@ "items": { "description": "This type represents a network attachment definition resource that provides the specification of the interface to be used to connect one or multiple connection points to a secondary container cluster network realizing a VL.\n", "type": "object", - "required": ["netAttDefResourceId", "resourceHandle"], + "required": [ + "netAttDefResourceId", + "resourceHandle" + ], "properties": { "netAttDefResourceId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { @@ -954,7 +1045,10 @@ "items": { "description": "This type represents input information related to one or more VNF internal CP instances created based on the same CPD.\nNOTE: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the VNF internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall\n belong to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n", "type": "object", - "required": ["cpdId", "netAttDefResourceId"], + "required": [ + "cpdId", + "netAttDefResourceId" + ], "properties": { "cpdId": { "description": "An identifier with the intention of being globally unique.\n", @@ -977,14 +1071,19 @@ "items": { "description": "This type represents an externally provided link port to be used to connect a VNFC connection point to an exernally managed VL.\n", "type": "object", - "required": ["vnfLinkPortId", "resourceHandle"], + "required": [ + "vnfLinkPortId", + "resourceHandle" + ], "properties": { "vnfLinkPortId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { @@ -1045,12 +1144,18 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self", "vnfLcmOpOcc", "vnfInstance"], + "required": [ + "self", + "vnfLcmOpOcc", + "vnfInstance" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1061,7 +1166,9 @@ "vnfLcmOpOcc": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -1072,7 +1179,9 @@ "vnfInstance": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", -- GitLab From 5ec7662e04a3acef8029226930641f89abd3047f Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 18 Dec 2024 16:34:43 +0500 Subject: [PATCH 098/141] update response body schema as per SOL 003 version 5.1.1 --- .../schemas/grant.schema.json | 42 +++++++++++++++---- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json b/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json index 59ecf5ef..e359824d 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json +++ b/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json @@ -771,7 +771,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes┬« that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes┬« that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", "type": "object", "required": [ "type" @@ -790,9 +790,37 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which the container cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } } } } @@ -825,7 +853,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -946,7 +974,7 @@ "description": "Information about internal VLs that are managed by other entities than the VNFM. See notes 4, 5, 7 and 8.\n", "type": "array", "items": { - "description": "This type represents an externally-managed internal VL.\n* NOTE 1: It is only applicable if the externally-managed VL is realized by a secondary container cluster network. It shall\n not be present otherwise.\n* NOTE 2: A link port is not needed for a VNFC internal connection point connected to a secondary container cluster\n network.\n* NOTE 3: An example of the network attachment definition resource when the container infrastructure service\n management is a Kubernetes┬« instance is a network attachment definition (NAD).\n* NOTE 4: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, an \n instance of intCp need not be included for each VNFC instance as all instances would contain the same \n information. It is sufficient to include one intCp for the related CPD. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version\n", + "description": "This type represents an externally-managed internal VL.\n* NOTE 1: It is only applicable if the externally-managed VL is realized by a secondary container cluster network. It shall\n not be present otherwise.\n* NOTE 2: A link port is not needed for a VNFC internal connection point connected to a secondary container cluster\n network.\n* NOTE 3: An example of the network attachment definition resource when the container infrastructure service\n management is a Kubernetes┬« instance is a network attachment definition (NAD).\n\n* NOTE 4: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, an \n instance of intCp need not be included for each VNFC instance as all instances would contain the same \n information. It is sufficient to include one intCp for the related CPD. The case of using, for a scalable VDU, a \n cloud native template in the MCIOP that describes one single VNFC instance is not specified in the present \n document version\n", "type": "object", "required": [ "id", @@ -994,7 +1022,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -1069,7 +1097,7 @@ "description": "Externally provided link ports to be used to connect VNFC connection points to this externally-managed VL on this network resource. If this attribute is not present, the VNFM shall create the link ports on the externally-managed VL. See note 2.\n", "type": "array", "items": { - "description": "This type represents an externally provided link port to be used to connect a VNFC connection point to an exernally managed VL.\n", + "description": "This type represents an externally provided link port to be used to connect a VNFC connection point to an externally managed VL.\n", "type": "object", "required": [ "vnfLinkPortId", @@ -1085,7 +1113,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes┬« instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes┬« instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", -- GitLab From 7883422310d23e4a02f31805c2ee7b6b125172f3 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 12:27:27 +0500 Subject: [PATCH 099/141] Fix issue #188: Set version headers --- .../ApiVersion.robot | 10 ++++++++++ ...NFLifecycleOperationGrantingKeywords.robot | 19 +++++++++++++++++++ .../environment/variables.txt | 1 + 3 files changed, 30 insertions(+) diff --git a/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot index 98a6c96b..1c74cea4 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot @@ -133,6 +133,7 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -140,6 +141,7 @@ POST API Version GET API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -147,6 +149,7 @@ GET API Version PUT API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -154,6 +157,7 @@ PUT API Version PATCH API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -161,6 +165,7 @@ PATCH API Version DELETE API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -168,6 +173,7 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -175,6 +181,7 @@ POST API Version with apiMajorVersion GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -182,6 +189,7 @@ GET API Version with apiMajorVersion PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -189,6 +197,7 @@ PUT API Version with apiMajorVersion PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -196,6 +205,7 @@ PATCH API Version with apiMajorVersion DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response diff --git a/SOL003/VNFLifecycleOperationGranting-API/VNFLifecycleOperationGrantingKeywords.robot b/SOL003/VNFLifecycleOperationGranting-API/VNFLifecycleOperationGrantingKeywords.robot index e0983b57..1d5c84d1 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/VNFLifecycleOperationGrantingKeywords.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/VNFLifecycleOperationGrantingKeywords.robot @@ -19,6 +19,7 @@ Send Request Grant Request in Synchronous mode Pass Execution If ${SYNC_MODE} == 0 The Granting process is asynchronous mode. Skipping the test Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/grantRequest.json @@ -32,6 +33,7 @@ Send Request Grant Request in Synchronous mode with attribute instantiationLevel Pass Execution If ${SYNC_MODE} == 0 The Granting process is asynchronous mode. Skipping the test Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/grantRequestWithAttributeInstantiationLevelId.json @@ -45,6 +47,7 @@ Send Request Grant Request in Synchronous mode with attribute targetScaleLevelIn Pass Execution If ${SYNC_MODE} == 0 The Granting process is asynchronous mode. Skipping the test Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/grantRequestWithAttributeTargetScaleLevelInfo.json @@ -58,6 +61,7 @@ Send Request Grant Request in Synchronous mode with attribute addResources Pass Execution If ${SYNC_MODE} == 0 The Granting process is asynchronous mode. Skipping the test Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/grantRequestWithAttributeAddResources.json @@ -71,6 +75,7 @@ Send Request Grant Request in Asynchronous mode Pass Execution If ${SYNC_MODE} == 1 The Granting process is synchronous mode. Skipping the test Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/grantRequest.json @@ -84,6 +89,7 @@ Send Request for a new Grant Forbiden Operation Log The grant request should be rejected Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/grantRejectedRequest.json @@ -99,6 +105,7 @@ Send Request Grant Request in Synchronous mode with permitted authorization scop Set Headers {"Content-Type": "${CONTENT_TYPE}"} ${scopeValue}= Create Dictionary scopeValue=${GRANT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/grantRequest.json @@ -113,6 +120,7 @@ Send Request Grant Request in Synchronous mode with not permitted authorization Set Headers {"Content-Type": "${CONTENT_TYPE}"} ${scopeValue}= Create Dictionary scopeValue=${GRANT_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/grantRequest.json @@ -145,6 +153,7 @@ Check HTTP Response Body Json Schema Is Get an individual grant - Successful log Trying to read an individual grant Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${response['headers']['Location']} Log Validate Status code @@ -153,6 +162,7 @@ Get an individual grant - Successful Get Grants Log Trying to perform a GET. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body}= Output response @@ -161,6 +171,7 @@ Get Grants Put Grants Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body}= Output response @@ -169,6 +180,7 @@ Put Grants Patch Grants Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body}= Output response @@ -177,6 +189,7 @@ Patch Grants Delete Grants Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body}= Output response @@ -186,6 +199,7 @@ Delete Grants Get individual grant log Trying to read an individual grant Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response @@ -193,6 +207,7 @@ Get individual grant Check resource existence Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 @@ -201,6 +216,7 @@ Post individual Grant log Trying to read an individual grant Pass Execution If ${SYNC_MODE} == 1 Skipping. Synchronous mode is supported Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response @@ -209,6 +225,7 @@ Post individual Grant Put individual Grant Log Trying to perform a GET. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response @@ -217,6 +234,7 @@ Put individual Grant Patch individual Grant Log Trying to perform a GET. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response @@ -225,6 +243,7 @@ Patch individual Grant Delete individual Grant Log Trying to perform a GET. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/grants/${grantId} ${body}= Output response diff --git a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt index bd0340b1..f9306524 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt @@ -16,6 +16,7 @@ ${grantId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d ${apiRoot} / ${apiName} grant ${apiMajorVersion} v1 +${API_VERSION} 1.13.0 ${SYNC_MODE} 1 -- GitLab From be4ac03dda77694027e94f7112195747eee25d87 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 23 Jan 2025 11:09:45 +0500 Subject: [PATCH 100/141] Editorial Changes: Resolve Mojibake in Response Bodies --- .../schemas/grant.schema.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json b/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json index e359824d..833a5cda 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json +++ b/SOL003/VNFLifecycleOperationGranting-API/schemas/grant.schema.json @@ -404,7 +404,7 @@ "description": "Mappings between software images defined in the VNFD and software images managed in the VIM.\n", "type": "array", "items": { - "description": "This type contains a mapping between a software image definition the VNFD and the corresponding software image managed by the NFVO in the VIM or CIR which is needed during compute resource instantiation.\nNOTE: For an OS container image, the value of this attribute is a string concatenating the name and tag of the\n image in the CIR separated by a colon ':' with no spaces, e.g. ΓÇ£dbImage:001ΓÇ¥.\n", + "description": "This type contains a mapping between a software image definition the VNFD and the corresponding software image managed by the NFVO in the VIM or CIR which is needed during compute resource instantiation.\nNOTE: For an OS container image, the value of this attribute is a string concatenating the name and tag of the\n image in the CIR separated by a colon ':' with no spaces, e.g. \"dbImage:001\".\n", "type": "object", "required": [ "vnfdSoftwareImageId", @@ -603,7 +603,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5, 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n* NOTE 2: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" a attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -636,7 +636,7 @@ "type": "boolean" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1083,7 +1083,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifiers of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the VNF internal CP created from the CPD identified by cpdId to a secondary container cluster network. See note.\n", + "description": "Identifiers of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the VNF internal CP created from the CPD identified by cpdId to a secondary container cluster network. See note.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", -- GitLab From adc14007c607c36edda7fc2e0dab61527bd4078b Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 6 Dec 2024 16:03:01 +0500 Subject: [PATCH 101/141] Update SOL003 document version in all testcases of VNF Fault Management API --- SOL003/VNFFaultManagement-API/Alarms.robot | 24 +++++----- .../IndividualAlarm.robot | 20 ++++---- .../IndividualSubscription.robot | 16 +++---- .../NotificationEndpoint.robot | 6 +-- .../Notifications.robot | 6 +-- .../Subscriptions.robot | 48 +++++++++---------- 6 files changed, 60 insertions(+), 60 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/Alarms.robot b/SOL003/VNFFaultManagement-API/Alarms.robot index eb41dc3f..e6690077 100644 --- a/SOL003/VNFFaultManagement-API/Alarms.robot +++ b/SOL003/VNFFaultManagement-API/Alarms.robot @@ -13,7 +13,7 @@ POST Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create Fault management alarms on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get information about multiple alarms ... Test title: Get information about multiple alarms ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get information about multiple alarms with filter ... Test title: Get information about multiple alarms with filter ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ Get information about multiple alarms Bad Request Invalid attribute-based filter ... Test title: Get information about multiple alarms Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to try to retrieve information about the alarm list with invalid filters and perform a JSON schema and content validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ PUT Alarms - Method not implemented ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Fault management alarms on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -121,7 +121,7 @@ PATCH Alarms - Method not implemented ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for Fault management alarms on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -133,7 +133,7 @@ DELETE Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Fault management alarms on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -145,7 +145,7 @@ Get information about multiple alarms as a Paged Response ... Test title: Get information about multiple alarms as a Paged Response ... Test objective: The objective is to retrieve information about the alarm list as a Paged Response ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF alarm resources ... Post-Conditions: none @@ -158,7 +158,7 @@ GET information about multiple alarms as a Paged Response with nextpage_opauque_ ... Test title: GET information about multiple alarms as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about multiple alarms as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving multiple alarms as a paged response has been successfully issued (Test ID 7.3.5.1.12) - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF alarm resources ... Post-Conditions: none @@ -171,7 +171,7 @@ Get information about multiple alarms - Bad Request Response too Big ... Test title: Get information about multiple alarms - Bad Request Response too Big ... Test objective: The objective is to try to retrieve information about the alarm list because response is too big and perform a JSON schema and content validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -184,7 +184,7 @@ Get information about multiple alarms with permitted authorization scope ... Test title: Get information about multiple alarms with permitted authorization scope ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -197,7 +197,7 @@ Get information about multiple alarms with not permitted authorization scope ... Test title: Get information about multiple alarms with not permitted authorization scope ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFFaultManagement-API/IndividualAlarm.robot b/SOL003/VNFFaultManagement-API/IndividualAlarm.robot index cd5d7cdc..7ba532fd 100644 --- a/SOL003/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL003/VNFFaultManagement-API/IndividualAlarm.robot @@ -14,7 +14,7 @@ POST Alarm - Method not implemented ... Test title: POST Alarm - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create Fault management individual alarm on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ Get information about an fault management individual alarm ... Test title: Get information about an fault management individual alarm ... Test objective: The objective is to retrieve information about an individual alarm and perform a JSON schema and content validation of the returned alarm data structure ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ PUT Alarm - Method not implemented ... Test title: PUT Alarm - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Fault management individual alarm on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PATCH Fault Management Individual Alarm ... Test title: PATCH Fault Management Individual Alarm ... Test objective: The objective is to Modify an individual alarm resource and perform a JSON schema and content validation of the returned alarm data structure ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ Modify an individual alarm resource - Precondition failed ... Test title: Modify an individual alarm resource - Precondition failed ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the resource was modified by another entity ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ Modify an individual alarm resource - Conflict ... Test title: Modify an individual alarm resource - Conflict ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the alarm is already in the state that is requested to be set ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ DELETE Alarm - Method not implemented ... Test title: DELETE Alarm - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Fault management individual alarm on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ Get information about an fault management individual alarm - Not Found ... Test title: Get information about an fault management individual alarm - Not Found ... Test objective: The objective is to test that retrieval of information about an individual alarm fails when individual alarm is not present ... Pre-conditions: The related alarm does not exists - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ PATCH Fault Management Individual Alarm with permitted authorization scope ... Test title: PATCH Fault Management Individual Alarm with permitted authorization scope ... Test objective: The objective is to Modify an individual alarm resource and perform a JSON schema and content validation of the returned alarm data structure with permitted authorization scope ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -132,7 +132,7 @@ PATCH Fault Management Individual Alarm with not permitted authorization scope ... Test title: PATCH Fault Management Individual Alarm with not permitted authorization scope ... Test objective: The objective is to Modify an individual alarm resource and perform a JSON schema and content validation of the returned alarm data structure with not permitted authorization scope ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFFaultManagement-API/IndividualSubscription.robot b/SOL003/VNFFaultManagement-API/IndividualSubscription.robot index 692a59c2..e15bcc37 100644 --- a/SOL003/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFFaultManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ Post Individual Subscription - Method not implemented ... Test title: Post Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for Fault management subscription on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ Get Information about an individual subscription ... Test title: Get Information about an individual subscription ... Test objective: The objective is to read an individual subscription for NFVO alarms subscribed by the client and perform a JSON schema and content validation of the returned fault management individual subscription data structure ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT an individual subscription - Method not implemented ... Test title:PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Fault management individual subscription on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH an individual subscription - Method not implemented ... Test title:PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Fault management individual subscription on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE an individual subscription ... Test title:DELETE an individual subscription ... Test objective: The objective is to test that DELETE method removes individual subscription on VNF ... Pre-conditions: The Subsbcription already exists - ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription is deleted @@ -73,7 +73,7 @@ Get Information about an individual subscription - Not Found ... Test title: Get Information about an individual subscription - Not Found ... Test objective: The objective is to test that the retrieval of an individual subscription for NFVO alarms subscribed by the client fails when subscription is not present ... Pre-conditions: The subscription with the given id does not exists - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ Get Information about an individual subscription with permitted authorization sc ... Test title: Get Information about an individual subscription with permitted authorization scope ... Test objective: The objective is to read an individual subscription for NFVO alarms subscribed by the client and perform a JSON schema and content validation of the returned fault management individual subscription data structure with permitted authorization scope ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ Get Information about an individual subscription with not permitted authorizatio ... Test title: Get Information about an individual subscription with not permitted authorization scope ... Test objective: The objective is to read an individual subscription for NFVO alarms subscribed by the client and perform a JSON schema and content validation of the returned fault management individual subscription data structure with not permitted authorization scope ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot b/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot index ae2c722d..34179592 100644 --- a/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF Fault Alarm Notification ... Test title: VNF Fault Alarm Notification ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Notification. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ VNF Fault Alarm Cleared Notification ... Test title: VNF Fault Alarm Cleared Notification ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm Cleared Notification. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm cleared notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ VNF Fault Alarm List Reulit Notification ... Test title: VNF Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test that the POST request triggers VNF Fault Alarm List Rebuilt Notification. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFFaultManagement-API/Notifications.robot b/SOL003/VNFFaultManagement-API/Notifications.robot index 55e1ae60..91e1637a 100644 --- a/SOL003/VNFFaultManagement-API/Notifications.robot +++ b/SOL003/VNFFaultManagement-API/Notifications.robot @@ -15,7 +15,7 @@ VNF Fault Alarm Notification ... Test title: VNF Fault Alarm Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm Notification when a virtualised resource within an VNF instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ VNF Fault Alarm Cleared Notification ... Test title: VNF Fault Alarm Cleared Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm Cleared Notification when a faulty virtualised resource within an VNF instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Fault Alarm List Rebuilt Notification ... Test title: VNF Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm List Rebuilt Notification when the VNFM decides to rebuild the list of its VNF alarms, e.g. due to a corruption in the alarm storage, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, one or more virtualised resource are in faulty state, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFFaultManagement-API/Subscriptions.robot b/SOL003/VNFFaultManagement-API/Subscriptions.robot index f91f20b9..b8d76d76 100644 --- a/SOL003/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL003/VNFFaultManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ Create a new Fault Management alarm subscription ... Test title: Create a new Fault Management alarm subscription ... Test objective: The objective is to create a new Fault management alarm subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure ... Pre-conditions: No subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription is created @@ -31,7 +31,7 @@ Create a new alarm subscription - DUPLICATION ... Test title: Create a new alarm subscription - DUPLICATION ... Test objective: The objective is to create a new subscription with the VNF allowing duplication and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: the NFVO allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists ... Post-Conditions: duplicated subscription is created @@ -46,7 +46,7 @@ Create a new alarm subscription - NO DUPLICATION ... Test title: Create a new alarm subscription - NO DUPLICATION ... Test objective: The objective is to create a new subscription with the VNF not allowing duplication and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: the NFVO decides to not create a duplicate subscription resource ... Post-Conditions: duplicated subscription is not created @@ -60,7 +60,7 @@ Retrieve a list of alarm subscriptions ... Test title: Retrieve a list of alarm subscriptions ... Test objective: The objective is to retrieve the list of active subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: noe @@ -73,7 +73,7 @@ Retrieve a list of alarm subscriptions with filter ... Test title: Retrieve a list of alarm subscriptions with filter ... Test objective: The objective is to retrieve the list of active subscriptions with filter and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters and perform a JSON schema and content validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ GET subscriptions with "all_fields" attribute selector ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -112,7 +112,7 @@ GET subscriptions with "exclude_default" attribute selector ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -125,7 +125,7 @@ GET subscriptions with "fields" attribute selector ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -138,7 +138,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -151,7 +151,7 @@ PUT subscriptions - Method not implemented ... Test title:PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Fault management subscriptions on VNF ... Pre-conditions: none - ... RReference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... RReference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -163,7 +163,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for Fault management subscriptions on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -175,7 +175,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Fault management subscriptions on VNF ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription is not deleted @@ -187,7 +187,7 @@ Retrieve a list of alarm subscriptions as Paged Response ... Test title: Retrieve a list of alarm subscriptions as Paged Response ... Test objective: The objective is to retrieve the list of active subscriptions as Paged Response. ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: noe @@ -200,7 +200,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to retrieve the list of active subscriptions because response is too big and perform a JSON schema and content validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -213,7 +213,7 @@ GET Subscription with attribute-based filter "id" ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -227,7 +227,7 @@ Get subscriptions with filter "filter.notificationTypes" ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -241,7 +241,7 @@ Get subscriptions with filter "filter.faultyResourceTypes" ... Test title: GET Subscription with attribute-based filter "filter.faultyResourceTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.faultyResourceTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -255,7 +255,7 @@ Get subscriptions with filter "filter.perceivedSeverities" ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -269,7 +269,7 @@ Get subscriptions with filter "filter.eventTypes" ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -283,7 +283,7 @@ Get subscriptions with filter "filter.probableCauses" ... Test title: GET Subscription with attribute-based filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" ... Pre-conditions: - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: @@ -297,7 +297,7 @@ POST Create a new Subscription - Unprocessable Content ... Test title: POST Create a new Subscription - Unprocessable Content ... Test objective: The objective is to test that content type of the message content is supported and the message content of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -310,7 +310,7 @@ Create a new Fault Management alarm subscription with permitted authorization sc ... Test title: Create a new Fault Management alarm subscription with permitted authorization scope ... Test objective: The objective is to create a new Fault management alarm subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure with permitted authorization scope ... Pre-conditions: No subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription is created @@ -325,7 +325,7 @@ Create a new Fault Management alarm subscription with not permitted authorizatio ... Test title: Create a new Fault Management alarm subscription with not permitted authorization scope ... Test objective: The objective is to create a new Fault management alarm subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure with not permitted authorization scope ... Pre-conditions: No subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 003 [1] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription is created -- GitLab From c7a4e84d4081ccf6fbeef8f87e4a50e32e4e68bc Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 18 Dec 2024 11:51:10 +0500 Subject: [PATCH 102/141] Editorial Change: Reformat the json schemas --- .../schemas/AlarmModification.schema.json | 7 ++- .../schemas/Alarms.schema.json | 32 ++++++++++--- .../schemas/FmSubscription.schema.json | 48 ++++++++++++++----- .../schemas/FmSubscriptions.schema.json | 48 ++++++++++++++----- .../schemas/alarm.schema.json | 32 ++++++++++--- .../alarmClearedNotification.schema.json | 17 +++++-- .../alarmListRebuiltNotification.schema.json | 17 +++++-- .../schemas/alarmModifications.schema.json | 9 +++- .../schemas/alarmNotification.schema.json | 44 +++++++++++++---- 9 files changed, 196 insertions(+), 58 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/schemas/AlarmModification.schema.json b/SOL003/VNFFaultManagement-API/schemas/AlarmModification.schema.json index b5e4fa9c..6a34804a 100644 --- a/SOL003/VNFFaultManagement-API/schemas/AlarmModification.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/AlarmModification.schema.json @@ -9,8 +9,11 @@ "ackState": { "description": "New value of the \"ackState\" attribute in \"Alarm\". Permitted values: * ACKNOWLEDGED * UNACKNOWLEDGED\n", "type": "string", - "enum": ["ACKNOWLEDGED", "UNACKNOWLEDGED"] + "enum": [ + "ACKNOWLEDGED", + "UNACKNOWLEDGED" + ] } } } -} +} \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API/schemas/Alarms.schema.json b/SOL003/VNFFaultManagement-API/schemas/Alarms.schema.json index cddec9e6..dab2c42c 100644 --- a/SOL003/VNFFaultManagement-API/schemas/Alarms.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/Alarms.schema.json @@ -29,10 +29,15 @@ "rootCauseFaultyResource": { "description": "This type represents the faulty virtual resources that have a negative impact on a VNF.\n", "type": "object", - "required": ["faultyResource", "faultyResourceType"], + "required": [ + "faultyResource", + "faultyResourceType" + ], "properties": { "faultyResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -79,7 +84,11 @@ "faultyResourceType": { "description": "The enumeration FaultyResourceType represents those types of faulty resource.\n", "type": "string", - "enum": ["COMPUTE", "STORAGE", "NETWORK"] + "enum": [ + "COMPUTE", + "STORAGE", + "NETWORK" + ] } } }, @@ -106,7 +115,10 @@ "ackState": { "description": "Acknowledgement state of the alarm. Permitted values: * UNACKNOWLEDGED * ACKNOWLEDGED.\n", "type": "string", - "enum": ["UNACKNOWLEDGED", "ACKNOWLEDGED"] + "enum": [ + "UNACKNOWLEDGED", + "ACKNOWLEDGED" + ] }, "perceivedSeverity": { "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", @@ -166,12 +178,16 @@ "_links": { "description": "Links for this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -182,7 +198,9 @@ "objectInstance": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFFaultManagement-API/schemas/FmSubscription.schema.json b/SOL003/VNFFaultManagement-API/schemas/FmSubscription.schema.json index 67f360ad..e6fc6b8a 100644 --- a/SOL003/VNFFaultManagement-API/schemas/FmSubscription.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/FmSubscription.schema.json @@ -1,7 +1,11 @@ { "description": "This type represents a subscription related to notifications about VNF faults.\n", "type": "object", - "required": ["id", "callbackUri", "_links"], + "required": [ + "id", + "callbackUri", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -18,20 +22,28 @@ { "oneOf": [ { - "required": ["vnfdId"] + "required": [ + "vnfdId" + ] }, { - "required": ["vnfProductsFromProviders"] + "required": [ + "vnfProductsFromProviders" + ] } ] }, { "oneOf": [ { - "required": ["vnfInstanceIds"] + "required": [ + "vnfInstanceIds" + ] }, { - "required": ["vnfInstanceNames"] + "required": [ + "vnfInstanceNames" + ] } ] } @@ -50,7 +62,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProvider"], + "required": [ + "vnfProvider" + ], "properties": { "vnfProvider": { "description": "Name of the VNF provider to match.\n", @@ -61,7 +75,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProductName"], + "required": [ + "vnfProductName" + ], "properties": { "vnfProductName": { "description": "Name of the VNF product to match.\n", @@ -72,7 +88,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfSoftwareVersion"], + "required": [ + "vnfSoftwareVersion" + ], "properties": { "vnfSoftwareVersion": { "description": "A version.\n", @@ -130,7 +148,11 @@ "items": { "description": "The enumeration FaultyResourceType represents those types of faulty resource.\n", "type": "string", - "enum": ["COMPUTE", "STORAGE", "NETWORK"] + "enum": [ + "COMPUTE", + "STORAGE", + "NETWORK" + ] } }, "perceivedSeverities": { @@ -180,12 +202,16 @@ "_links": { "description": "Links for this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json b/SOL003/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json index d70aa2ee..268e5066 100644 --- a/SOL003/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json @@ -3,7 +3,11 @@ "items": { "description": "This type represents a subscription related to notifications about VNF faults.\n", "type": "object", - "required": ["id", "callbackUri", "_links"], + "required": [ + "id", + "callbackUri", + "_links" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -20,20 +24,28 @@ { "oneOf": [ { - "required": ["vnfdId"] + "required": [ + "vnfdId" + ] }, { - "required": ["vnfProductsFromProviders"] + "required": [ + "vnfProductsFromProviders" + ] } ] }, { "oneOf": [ { - "required": ["vnfInstanceIds"] + "required": [ + "vnfInstanceIds" + ] }, { - "required": ["vnfInstanceNames"] + "required": [ + "vnfInstanceNames" + ] } ] } @@ -52,7 +64,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProvider"], + "required": [ + "vnfProvider" + ], "properties": { "vnfProvider": { "description": "Name of the VNF provider to match.\n", @@ -63,7 +77,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfProductName"], + "required": [ + "vnfProductName" + ], "properties": { "vnfProductName": { "description": "Name of the VNF product to match.\n", @@ -74,7 +90,9 @@ "type": "array", "items": { "type": "object", - "required": ["vnfSoftwareVersion"], + "required": [ + "vnfSoftwareVersion" + ], "properties": { "vnfSoftwareVersion": { "description": "A version.\n", @@ -132,7 +150,11 @@ "items": { "description": "The enumeration FaultyResourceType represents those types of faulty resource.\n", "type": "string", - "enum": ["COMPUTE", "STORAGE", "NETWORK"] + "enum": [ + "COMPUTE", + "STORAGE", + "NETWORK" + ] } }, "perceivedSeverities": { @@ -182,12 +204,16 @@ "_links": { "description": "Links for this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFFaultManagement-API/schemas/alarm.schema.json b/SOL003/VNFFaultManagement-API/schemas/alarm.schema.json index 628e398e..965f3343 100644 --- a/SOL003/VNFFaultManagement-API/schemas/alarm.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/alarm.schema.json @@ -25,10 +25,15 @@ "rootCauseFaultyResource": { "description": "This type represents the faulty virtual resources that have a negative impact on a VNF.\n", "type": "object", - "required": ["faultyResource", "faultyResourceType"], + "required": [ + "faultyResource", + "faultyResourceType" + ], "properties": { "faultyResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -75,7 +80,11 @@ "faultyResourceType": { "description": "The enumeration FaultyResourceType represents those types of faulty resource.\n", "type": "string", - "enum": ["COMPUTE", "STORAGE", "NETWORK"] + "enum": [ + "COMPUTE", + "STORAGE", + "NETWORK" + ] } } }, @@ -102,7 +111,10 @@ "ackState": { "description": "Acknowledgement state of the alarm. Permitted values: * UNACKNOWLEDGED * ACKNOWLEDGED.\n", "type": "string", - "enum": ["UNACKNOWLEDGED", "ACKNOWLEDGED"] + "enum": [ + "UNACKNOWLEDGED", + "ACKNOWLEDGED" + ] }, "perceivedSeverity": { "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", @@ -162,12 +174,16 @@ "_links": { "description": "Links for this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -178,7 +194,9 @@ "objectInstance": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFFaultManagement-API/schemas/alarmClearedNotification.schema.json b/SOL003/VNFFaultManagement-API/schemas/alarmClearedNotification.schema.json index b3a8795b..e71ffd49 100644 --- a/SOL003/VNFFaultManagement-API/schemas/alarmClearedNotification.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/alarmClearedNotification.schema.json @@ -18,7 +18,9 @@ "notificationType": { "description": "Discriminator for the different notification types. Shall be set to \"AlarmClearedNotification\" for this notification type.\n", "type": "string", - "enum": ["AlarmClearedNotification"] + "enum": [ + "AlarmClearedNotification" + ] }, "subscriptionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -41,12 +43,17 @@ "_links": { "description": "Links to resources related to this notification.\n", "type": "object", - "required": ["subscription", "alarm"], + "required": [ + "subscription", + "alarm" + ], "properties": { "subscription": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -57,7 +64,9 @@ "alarm": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFFaultManagement-API/schemas/alarmListRebuiltNotification.schema.json b/SOL003/VNFFaultManagement-API/schemas/alarmListRebuiltNotification.schema.json index 14ca3dc9..d13d292b 100644 --- a/SOL003/VNFFaultManagement-API/schemas/alarmListRebuiltNotification.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/alarmListRebuiltNotification.schema.json @@ -16,7 +16,9 @@ "notificationType": { "description": "Discriminator for the different notification types. Shall be set to \"AlarmListRebuiltNotification\" for this notification type.\n", "type": "string", - "enum": ["AlarmListRebuiltNotification"] + "enum": [ + "AlarmListRebuiltNotification" + ] }, "subscriptionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -30,12 +32,17 @@ "_links": { "description": "Links to resources related to this notification.\n", "type": "object", - "required": ["subscription", "alarms"], + "required": [ + "subscription", + "alarms" + ], "properties": { "subscription": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -46,7 +53,9 @@ "alarms": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFFaultManagement-API/schemas/alarmModifications.schema.json b/SOL003/VNFFaultManagement-API/schemas/alarmModifications.schema.json index 9e0c34e7..4e98ff4d 100644 --- a/SOL003/VNFFaultManagement-API/schemas/alarmModifications.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/alarmModifications.schema.json @@ -1,12 +1,17 @@ { "description": "This type represents attribute modifications for an \"Individual alarm\" resource, i.e. modifications to a resource representation based on the \"Alarm\" data type. The attributes of \"Alarm\" that can be modified are included in the \"AlarmModifications\" data type.\n", "type": "object", - "required": ["ackState"], + "required": [ + "ackState" + ], "properties": { "ackState": { "description": "New value of the \"ackState\" attribute in \"Alarm\". Permitted values: * ACKNOWLEDGED * UNACKNOWLEDGED\n", "type": "string", - "enum": ["ACKNOWLEDGED", "UNACKNOWLEDGED"] + "enum": [ + "ACKNOWLEDGED", + "UNACKNOWLEDGED" + ] } } } \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API/schemas/alarmNotification.schema.json b/SOL003/VNFFaultManagement-API/schemas/alarmNotification.schema.json index 1d80e903..d9448c34 100644 --- a/SOL003/VNFFaultManagement-API/schemas/alarmNotification.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/alarmNotification.schema.json @@ -17,7 +17,9 @@ "notificationType": { "description": "Discriminator for the different notification types. Shall be set to \"AlarmNotification\" for this notification type.\n", "type": "string", - "enum": ["AlarmNotification"] + "enum": [ + "AlarmNotification" + ] }, "subscriptionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -55,10 +57,15 @@ "rootCauseFaultyResource": { "description": "This type represents the faulty virtual resources that have a negative impact on a VNF.\n", "type": "object", - "required": ["faultyResource", "faultyResourceType"], + "required": [ + "faultyResource", + "faultyResourceType" + ], "properties": { "faultyResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -105,7 +112,11 @@ "faultyResourceType": { "description": "The enumeration FaultyResourceType represents those types of faulty resource.\n", "type": "string", - "enum": ["COMPUTE", "STORAGE", "NETWORK"] + "enum": [ + "COMPUTE", + "STORAGE", + "NETWORK" + ] } } }, @@ -132,7 +143,10 @@ "ackState": { "description": "Acknowledgement state of the alarm. Permitted values: * UNACKNOWLEDGED * ACKNOWLEDGED.\n", "type": "string", - "enum": ["UNACKNOWLEDGED", "ACKNOWLEDGED"] + "enum": [ + "UNACKNOWLEDGED", + "ACKNOWLEDGED" + ] }, "perceivedSeverity": { "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", @@ -192,12 +206,16 @@ "_links": { "description": "Links for this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -208,7 +226,9 @@ "objectInstance": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -223,12 +243,16 @@ "_links": { "description": "Links to resources related to this notification.\n", "type": "object", - "required": ["subscription"], + "required": [ + "subscription" + ], "properties": { "subscription": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", -- GitLab From 9ce95381023ae19a25689e32b2873e032c7d9901 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 18 Dec 2024 12:10:06 +0500 Subject: [PATCH 103/141] update response body schemas as per SOL 003 version 5.1.1 --- .../schemas/Alarms.schema.json | 6 +-- .../schemas/FmSubscription.schema.json | 47 +++++++++++++++++++ .../schemas/FmSubscriptions.schema.json | 47 +++++++++++++++++++ .../schemas/alarm.schema.json | 6 +-- .../schemas/alarmNotification.schema.json | 6 +-- 5 files changed, 103 insertions(+), 9 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/schemas/Alarms.schema.json b/SOL003/VNFFaultManagement-API/schemas/Alarms.schema.json index dab2c42c..25aa437a 100644 --- a/SOL003/VNFFaultManagement-API/schemas/Alarms.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/Alarms.schema.json @@ -149,11 +149,11 @@ ] }, "faultType": { - "description": "Additional information to clarify the type of the fault. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE\".\n", + "description": "Additional information to clarify the type of the fault. Valid values applicable to specific Alarms are specified as \"Alarm definition identifier\" values of the Alarm applicable to Or-Vnfm reference point, as defined in clause 7.3 of ETSI GS NFV-IFA 045 [13]. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE\".\n", "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. If the attribute \"faultType\" has the value “NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE”, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. \n physical maintenance/repair, hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g.\n to support energy efficiency or resource usage.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Or-Vnfm reference point, as defined in clause 7.3 of ETSI GS NFV-IFA 045 [13]. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. \n physical maintenance/repair, hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g.\n to support energy efficiency or resource usage.\n", "type": "string" }, "isRootCause": { @@ -169,7 +169,7 @@ } }, "faultDetails": { - "description": "Provides additional information about the fault. See notes 1 and 2.\n", + "description": "Provides additional information about the fault. See notes 1 and 2. Valid values applicable to specific Alarms are specified as \"Fault details\" values of the Alarm applicable to Or-Vnfm reference point, as defined in clause 7.3 of ETSI GS NFV-IFA 045 [13].\n", "type": "array", "items": { "type": "string" diff --git a/SOL003/VNFFaultManagement-API/schemas/FmSubscription.schema.json b/SOL003/VNFFaultManagement-API/schemas/FmSubscription.schema.json index e6fc6b8a..da71a4d8 100644 --- a/SOL003/VNFFaultManagement-API/schemas/FmSubscription.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/FmSubscription.schema.json @@ -199,6 +199,53 @@ "description": "String formatted according to IETF RFC 3986.\n", "type": "string" }, + "fmConnection": { + "description": "An access information and interface information to monitor the FM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "The MonitoringConnection shall follow the indications provided.\n* NOTE: The VNFM can be made aware of monitoring connection information, \n including their identifiers to be used by configuration means outside the scope of the \n present document (e.g. using relevant NFV-MANO management APIs as defined in \n ETSI GS NFV-SOL 009 [i.18]).\n", + "type": "object", + "required": [ + "id", + "monitoringType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way.\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + } + } + }, "_links": { "description": "Links for this resource.\n", "type": "object", diff --git a/SOL003/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json b/SOL003/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json index 268e5066..6887b2cd 100644 --- a/SOL003/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json @@ -201,6 +201,53 @@ "description": "String formatted according to IETF RFC 3986.\n", "type": "string" }, + "fmConnection": { + "description": "An access information and interface information to monitor the FM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "The MonitoringConnection shall follow the indications provided.\n* NOTE: The VNFM can be made aware of monitoring connection information, \n including their identifiers to be used by configuration means outside the scope of the \n present document (e.g. using relevant NFV-MANO management APIs as defined in \n ETSI GS NFV-SOL 009 [i.18]).\n", + "type": "object", + "required": [ + "id", + "monitoringType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way.\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + } + } + }, "_links": { "description": "Links for this resource.\n", "type": "object", diff --git a/SOL003/VNFFaultManagement-API/schemas/alarm.schema.json b/SOL003/VNFFaultManagement-API/schemas/alarm.schema.json index 965f3343..fc644e5b 100644 --- a/SOL003/VNFFaultManagement-API/schemas/alarm.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/alarm.schema.json @@ -145,11 +145,11 @@ ] }, "faultType": { - "description": "Additional information to clarify the type of the fault. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE\".\n", + "description": "Additional information to clarify the type of the fault. Valid values applicable to specific Alarms are specified as \"Alarm definition identifier\" values of the Alarm applicable to Or-Vnfm reference point, as defined in clause 7.3 of ETSI GS NFV-IFA 045 [13]. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE\".\n", "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. If the attribute \"faultType\" has the value “NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE”, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. \n physical maintenance/repair, hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g.\n to support energy efficiency or resource usage.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Or-Vnfm reference point, as defined in clause 7.3 of ETSI GS NFV-IFA 045 [13]. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. \n physical maintenance/repair, hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g.\n to support energy efficiency or resource usage.\n", "type": "string" }, "isRootCause": { @@ -165,7 +165,7 @@ } }, "faultDetails": { - "description": "Provides additional information about the fault. See notes 1 and 2.\n", + "description": "Provides additional information about the fault. See notes 1 and 2. Valid values applicable to specific Alarms are specified as \"Fault details\" values of the Alarm applicable to Or-Vnfm reference point, as defined in clause 7.3 of ETSI GS NFV-IFA 045 [13].\n", "type": "array", "items": { "type": "string" diff --git a/SOL003/VNFFaultManagement-API/schemas/alarmNotification.schema.json b/SOL003/VNFFaultManagement-API/schemas/alarmNotification.schema.json index d9448c34..13d22b09 100644 --- a/SOL003/VNFFaultManagement-API/schemas/alarmNotification.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/alarmNotification.schema.json @@ -177,11 +177,11 @@ ] }, "faultType": { - "description": "Additional information to clarify the type of the fault. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE\".\n", + "description": "Additional information to clarify the type of the fault. Valid values applicable to specific Alarms are specified as \"Alarm definition identifier\" values of the Alarm applicable to Or-Vnfm reference point, as defined in clause 7.3 of ETSI GS NFV-IFA 045 [13]. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE\".\n", "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. If the attribute \"faultType\" has the value “NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE”, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. \n physical maintenance/repair, hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g.\n to support energy efficiency or resource usage.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Or-Vnfm reference point, as defined in clause 7.3 of ETSI GS NFV-IFA 045 [13]. If the attribute \"faultType\" has the value “NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE”, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. \n physical maintenance/repair, hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g.\n to support energy efficiency or resource usage.\n", "type": "string" }, "isRootCause": { @@ -197,7 +197,7 @@ } }, "faultDetails": { - "description": "Provides additional information about the fault. See notes 1 and 2.\n", + "description": "Provides additional information about the fault. See notes 1 and 2. Valid values applicable to specific Alarms are specified as \"Fault details\" values of the Alarm applicable to Or-Vnfm reference point, as defined in clause 7.3 of ETSI GS NFV-IFA 045 [13].\n", "type": "array", "items": { "type": "string" -- GitLab From a9dd8df59a654526956801a86e51b122b05ee84c Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 11:36:32 +0500 Subject: [PATCH 104/141] Fix issue #188: Set version headers --- .../VNFFaultManagement-API/ApiVersion.robot | 10 +++ .../FaultManagement-APIKeyword.robot | 61 ++++++++++++++++++- .../NotificationEndpoint.robot | 4 ++ .../environment/variables.txt | 1 + 4 files changed, 74 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/ApiVersion.robot b/SOL003/VNFFaultManagement-API/ApiVersion.robot index b1a8f8ef..b9aca43f 100644 --- a/SOL003/VNFFaultManagement-API/ApiVersion.robot +++ b/SOL003/VNFFaultManagement-API/ApiVersion.robot @@ -133,6 +133,7 @@ DELETE API Version with apiMajorVerion - Method not implemented *** Keywords *** POST API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -140,6 +141,7 @@ POST API Version GET API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -147,6 +149,7 @@ GET API Version PUT API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -154,6 +157,7 @@ PUT API Version PATCH API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -161,6 +165,7 @@ PATCH API Version DELETE API Version Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/api_versions ${outputResponse}= Output response @@ -168,6 +173,7 @@ DELETE API Version POST API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -175,6 +181,7 @@ POST API Version with apiMajorVersion GET API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -182,6 +189,7 @@ GET API Version with apiMajorVersion PUT API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -189,6 +197,7 @@ PUT API Version with apiMajorVersion PATCH API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response @@ -196,6 +205,7 @@ PATCH API Version with apiMajorVersion DELETE API Version with apiMajorVersion Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions ${outputResponse}= Output response diff --git a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot index ad5fcde0..dde7a6ec 100644 --- a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot @@ -18,12 +18,14 @@ Create Sessions Check created Subscription existence Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} Integer response status 200 Check Postcondition FaultManagement Subscription Is Set Log Check Postcondition subscription exist Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} @@ -40,12 +42,14 @@ Check Precondition VNF fault management individual alarm Exists Check Individual Subscription existence Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 Check Individual Subscription deleted Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 404 @@ -84,6 +88,7 @@ Check HTTP Response Header ContentType is Check Postcondition Subscription Resource Returned in Location Header Is Available Log Going to check postcondition + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${response['headers']['Location']} Integer response status 200 @@ -97,6 +102,7 @@ Check Postcondition Subscription Resource Returned in Location Header Is Availab Send POST request for fault management Alarms log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response @@ -105,6 +111,7 @@ Send POST request for fault management Alarms PATCH Fault management Alarms log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse} = Output response @@ -113,6 +120,7 @@ PATCH Fault management Alarms PUT Fault management Alarms log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response @@ -121,6 +129,7 @@ PUT Fault management Alarms DELETE Fault management Alarms log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms ${outputResponse}= Output response @@ -129,6 +138,7 @@ DELETE Fault management Alarms GET Fault Management Alarms Log Query NFVO The GET method queries information about multiple alarms. Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms @@ -138,6 +148,7 @@ GET Fault Management Alarms GET Fault Management Alarms with nextpage_opaque_marker parameter Log Get next page of subscriptions Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query using the URI provided in the previous GET request and validate response Get ${nextPageUri} @@ -148,7 +159,8 @@ GET Fault Management Alarms with nextpage_opaque_marker parameter GET Fault Management Alarms With Filters Log Query NFVO The GET method queries information about multiple alarms with filters. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${alarm_filter}=${nsInstanceId} ${outputResponse}= Output response @@ -157,7 +169,8 @@ GET Fault Management Alarms With Filters GET Fault Management Alarms With Invalid Filters Log Query NFVO The GET method queries information about multiple alarms with filters. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?${invalid_alarm_filter}=${nsInstanceId} ${outputResponse}= Output response @@ -166,6 +179,7 @@ GET Alarms Task with all_fields attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use fields parameter Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_default ${output}= Output response @@ -174,6 +188,7 @@ GET Alarms Task with exclude_default attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use fields parameter Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_default ${output}= Output response @@ -182,6 +197,7 @@ GET Alarms Task with fields attribute selector Log Trying to get all alarms present in the NFVO Catalogue, using fields Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use fields parameter Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?fields=${fields} ${output}= Output response @@ -190,6 +206,7 @@ GET Alarms Task with exclude_fields attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using fields Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use fields parameter Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/alarms?exclude_fields=${fields} ${output}= Output response @@ -197,6 +214,7 @@ GET Alarms Task with exclude_fields attribute selector Send POST request for fault management Individual Alarm log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response @@ -207,6 +225,7 @@ GET Fault Management Alarms with permitted authorization scope Set Headers {"Accept":"${ACCEPT}"} ${scopeValue}= Create Dictionary scopeValue=${ALARMS_READONLY_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms @@ -218,6 +237,7 @@ GET Fault Management Alarms with not permitted authorization scope Set Headers {"Accept":"${ACCEPT}"} ${scopeValue}= Create Dictionary scopeValue=${ALARMS_READONLY_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms @@ -227,6 +247,7 @@ GET Fault Management Alarms with not permitted authorization scope DELETE Fault Management Individual Alarm log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response @@ -235,6 +256,7 @@ DELETE Fault Management Individual Alarm PUT Fault Management Individual Alarm log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${outputResponse}= Output response @@ -244,6 +266,7 @@ GET Fault Management Individual Alarm Log Query VNF The GET method queries information about an alarm. Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} @@ -254,6 +277,7 @@ GET Fault Management Individual Alarm with invalid id Log Query NFVO The GET method queries information about an invalid alarm. Should return does not exist Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query Get ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${invalidAlarmId} @@ -264,6 +288,7 @@ PATCH Fault Management Individual Alarm log Trying to perform a PATCH. This method modifies an individual alarm resource Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/alarmModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} @@ -276,6 +301,7 @@ PATCH Fault Management Individual Alarm with permitted authorization scope Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} ${scopeValue}= Create Dictionary scopeValue=${ALARMS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${body}= Get File jsons/alarmModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} @@ -288,6 +314,7 @@ PATCH Fault Management Individual Alarm with not permitted authorization scope Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} ${scopeValue}= Create Dictionary scopeValue=${ALARMS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${body}= Get File jsons/alarmModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} @@ -299,6 +326,7 @@ PATCH Fault Management Individual Alarm - Etag mismatch Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Set Headers {"If-Match": "${invalid_etag}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/alarmModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} @@ -310,6 +338,7 @@ PATCH Fault Management Individual Alarm Conflict Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Set Headers {"If-Match": "${Etag}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/alarmModifications.json Patch ${apiRoot}/${apiName}/${apiMajorVersion}/alarms/${alarmId} ${body} @@ -320,6 +349,7 @@ POST Subscription Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/fmSubscriptionRequest.json ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} @@ -339,6 +369,7 @@ Send POST Request for duplicated subscription Pass Execution If ${VNFM_DUPLICATION} == 0 NVFO is not permitting duplication. Skipping the test Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/fmSubscriptionRequest.json ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} @@ -358,6 +389,7 @@ Send POST Request for duplicated subscription not permitted Pass Execution If ${VNFM_DUPLICATION} == 1 NVFO is not permitting duplication. Skipping the test Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/fmSubscriptionRequest.json ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} @@ -378,6 +410,7 @@ POST Subscription with permitted authorization scope Set Headers {"Content-Type": "${CONTENT_TYPE}"} ${scopeValue}= Create Dictionary scopeValue=${ALARMS_SUBSCRIPTIONS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/fmSubscriptionRequest.json ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} @@ -398,6 +431,7 @@ POST Subscription with not permitted authorization scope Set Headers {"Content-Type": "${CONTENT_TYPE}"} ${scopeValue}= Create Dictionary scopeValue=${ALARMS_SUBSCRIPTIONS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} ${template}= Get File jsons/fmSubscriptionRequest.json ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} @@ -415,6 +449,7 @@ POST Subscription with not permitted authorization scope GET Subscriptions Log Get the list of active subscriptions Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response @@ -423,6 +458,7 @@ GET Subscriptions GET Subscriptions with filter Log Get the list of active subscriptions using a filter Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter} ${outputResponse}= Output response @@ -431,6 +467,7 @@ GET Subscriptions with filter GET Subscriptions with Invalid filter Log Get the list of active subscriptions using an invalid filter Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${sub_filter_invalid} ${outputResponse}= Output response @@ -438,6 +475,7 @@ GET Subscriptions with Invalid filter Get subscriptions with all_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response @@ -445,6 +483,7 @@ Get subscriptions with all_fields attribute selector Get subscriptions with exclude_default attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_default ${output}= Output response @@ -452,6 +491,7 @@ Get subscriptions with exclude_default attribute selector Get subscriptions with fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?fields=${fields} ${output}= Output response @@ -459,6 +499,7 @@ Get subscriptions with fields attribute selector Get subscriptions with exclude_fields attribute selector Log Get the list of active subscriptions, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields} ${output}= Output response @@ -466,6 +507,7 @@ Get subscriptions with exclude_fields attribute selector PUT Subscriptions log Trying to perform a PUT Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response @@ -474,6 +516,7 @@ PUT Subscriptions PATCH Subscriptions log Trying to perform a PATCH Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response @@ -482,6 +525,7 @@ PATCH Subscriptions DELETE Subscriptions log Trying to perform a DELETE Subscriptions. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response @@ -490,6 +534,7 @@ DELETE Subscriptions POST Individual Subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -498,6 +543,7 @@ POST Individual Subscription GET Individual Subscription log Trying to get information about an individual subscription Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -508,6 +554,7 @@ GET Individual Subscription with permitted authorization scope Set Headers {"Accept":"${ACCEPT}"} ${scopeValue}= Create Dictionary scopeValue=${ALARMS_SUBSCRIPTIONS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -518,6 +565,7 @@ GET Individual Subscription with not permitted authorization scope Set Headers {"Accept":"${ACCEPT}"} ${scopeValue}= Create Dictionary scopeValue=${ALARMS_SUBSCRIPTIONS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -526,6 +574,7 @@ GET Individual Subscription with not permitted authorization scope PUT Individual Subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -534,6 +583,7 @@ PUT Individual Subscription PATCH Individual Subscription log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -542,6 +592,7 @@ PATCH Individual Subscription DELETE Individual Subscription log Trying to perform a DELETE. Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response @@ -561,6 +612,7 @@ Check HTTP Response Header Contain Link Get subscriptions with filter "id" Log Get the list of active subscriptions using a filter "id" Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?id=${subscription_id} ${outputResponse}= Output response @@ -572,6 +624,7 @@ Check PostCondition HTTP Response Body Subscription Matches the requested attrib Get subscriptions with filter "filter_notificationTypes" Log Get the list of active subscriptions using a filter "filter.notificationTypes" Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.notificationTypes=${notification_type} ${outputResponse}= Output response @@ -585,6 +638,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_faultyResourceTypes" Log Get the list of active subscriptions using a filter "filter.faultyResourceTypes" Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.faultyResourceTypes=${faultyResourceType} ${outputResponse}= Output response @@ -598,6 +652,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_perceivedSeverities" Log Get the list of active subscriptions using a filter "filter.perceivedSeverities" Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.perceivedSeverities=${perceivedSeverity} ${outputResponse}= Output response @@ -611,6 +666,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_eventTypes" Log Get the list of active subscriptions using a filter "filter.eventTypes" Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.eventTypes=${eventType} ${outputResponse}= Output response @@ -624,6 +680,7 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri Get subscriptions with filter "filter_probableCauses" Log Get the list of active subscriptions using a filter "filter.probableCauses" Set Headers {"Accept": "${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.probableCauses=${probableCause} ${outputResponse}= Output response diff --git a/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot b/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot index 34179592..fba4da18 100644 --- a/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot @@ -48,6 +48,7 @@ VNF Fault Alarm List Reulit Notification Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} Integer response status 200 @@ -64,6 +65,7 @@ Post Alarm Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/AlarmNotification.json ${body}= Format String ${template} subscriptionId=${subscriptionId} @@ -75,6 +77,7 @@ Post Alarm Cleared Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/AlarmClearedNotification.json ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} @@ -86,6 +89,7 @@ Post Alarm List Rebuilt Notification log Trying to perform a POST to get notification Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/AlarmListRebuiltNotification.json ${body}= Format String ${template} subscriptionId=${subscriptionId} diff --git a/SOL003/VNFFaultManagement-API/environment/variables.txt b/SOL003/VNFFaultManagement-API/environment/variables.txt index 874a0475..fbd29140 100644 --- a/SOL003/VNFFaultManagement-API/environment/variables.txt +++ b/SOL003/VNFFaultManagement-API/environment/variables.txt @@ -39,6 +39,7 @@ ${NFVO_FIELDS} 1 ${apiRoot} / ${apiName} vnffm ${apiMajorVersion} v1 +${API_VERSION} 1.14.0 ${nextPageUri} /some_uri -- GitLab From 3907b947693f0ce1ddf00f82ca4c9ca4fe8bc087 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 11:55:42 +0500 Subject: [PATCH 105/141] Editorial Change: Move Notification Endpoint keywords to FaultManagement-APIKeyword file --- .../FaultManagement-APIKeyword.robot | 47 +++++++++++++++- .../NotificationEndpoint.robot | 56 +------------------ 2 files changed, 48 insertions(+), 55 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot index dde7a6ec..094c2a7d 100644 --- a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot @@ -694,4 +694,49 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri JWT Encode [Arguments] ${payload} ${key} ${algorithm} ${encoded}= Evaluate jwt.encode(${payload}, ${key}, ${algorithm}) - [Return] ${encoded} \ No newline at end of file + [Return] ${encoded} +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body FmSubscriptions.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Post Alarm Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/AlarmNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm Cleared Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/AlarmClearedNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Alarm List Rebuilt Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/AlarmListRebuiltNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot b/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot index fba4da18..42dac9ed 100644 --- a/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot @@ -2,6 +2,7 @@ Library String Library OperatingSystem Resource environment/variables.txt +Resource FaultManagement-APIKeyword.robot Library JSONLibrary Library JSONSchemaLibrary schemas/ Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false @@ -42,57 +43,4 @@ VNF Fault Alarm List Reulit Notification ... Applicability: none ... Post-Conditions: none Post Alarm List Rebuilt Notification - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Set Headers {"Version": "${API_VERSION}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body FmSubscriptions.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Log Validate Status code - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post Alarm Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Set Headers {"Version": "${API_VERSION}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${template} = Get File jsons/AlarmNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Alarm Cleared Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Set Headers {"Version": "${API_VERSION}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${template} = Get File jsons/AlarmClearedNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} alarmId=${alarmId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Post Alarm List Rebuilt Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Set Headers {"Version": "${API_VERSION}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} - ${template} = Get File jsons/AlarmListRebuiltNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Check HTTP Response Status Code Is 204 \ No newline at end of file -- GitLab From cf35e9879a662c92987b21eb1b5d31ed6acb06b9 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 20 Dec 2024 11:58:57 +0500 Subject: [PATCH 106/141] test different methods of notification endpoint of VNF LCM as per SOL 003 specification version 5.1.1 --- .../FaultManagement-APIKeyword.robot | 35 +++++++++++++- .../NotificationEndpoint.robot | 46 ++++++++++++++++++- 2 files changed, 79 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot index 094c2a7d..63607559 100644 --- a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot @@ -739,4 +739,37 @@ Post Alarm List Rebuilt Notification ${body}= Format String ${template} subscriptionId=${subscriptionId} Post ${callbackResp} ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Set Global Variable ${response} ${outputResponse} +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PUT notification endpoint + Log Trying to perform a PUT. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PATCH notification endpoint + Log Trying to perform a PATCH. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + Log Trying to perform a DELETE. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot b/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot index 42dac9ed..a01d0a32 100644 --- a/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFFaultManagement-API/NotificationEndpoint.robot @@ -43,4 +43,48 @@ VNF Fault Alarm List Reulit Notification ... Applicability: none ... Post-Conditions: none Post Alarm List Rebuilt Notification - Check HTTP Response Status Code Is 204 \ No newline at end of file + Check HTTP Response Status Code Is 204 +Test the Notification Endpoint - Successful + [Documentation] Test ID: 7.3.5.7.4 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.5.7.5 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.5.7.6 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 7.3.5.7.7 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 \ No newline at end of file -- GitLab From 53d13970b98869c653dfda619695acac5bb4b6a4 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 23 Jan 2025 11:13:23 +0500 Subject: [PATCH 107/141] Editorial Change: Resolve Mojibake in Response Bodies --- SOL003/VNFFaultManagement-API/schemas/Alarms.schema.json | 2 +- SOL003/VNFFaultManagement-API/schemas/alarm.schema.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFFaultManagement-API/schemas/Alarms.schema.json b/SOL003/VNFFaultManagement-API/schemas/Alarms.schema.json index 25aa437a..18086fd0 100644 --- a/SOL003/VNFFaultManagement-API/schemas/Alarms.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/Alarms.schema.json @@ -153,7 +153,7 @@ "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Or-Vnfm reference point, as defined in clause 7.3 of ETSI GS NFV-IFA 045 [13]. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. \n physical maintenance/repair, hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g.\n to support energy efficiency or resource usage.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Or-Vnfm reference point, as defined in clause 7.3 of ETSI GS NFV-IFA 045 [13]. If the attribute \"faultType\" has the value \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE\", the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. \n physical maintenance/repair, hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g.\n to support energy efficiency or resource usage.\n", "type": "string" }, "isRootCause": { diff --git a/SOL003/VNFFaultManagement-API/schemas/alarm.schema.json b/SOL003/VNFFaultManagement-API/schemas/alarm.schema.json index fc644e5b..837ff5fe 100644 --- a/SOL003/VNFFaultManagement-API/schemas/alarm.schema.json +++ b/SOL003/VNFFaultManagement-API/schemas/alarm.schema.json @@ -149,7 +149,7 @@ "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Or-Vnfm reference point, as defined in clause 7.3 of ETSI GS NFV-IFA 045 [13]. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. \n physical maintenance/repair, hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g.\n to support energy efficiency or resource usage.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Or-Vnfm reference point, as defined in clause 7.3 of ETSI GS NFV-IFA 045 [13]. If the attribute \"faultType\" has the value \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE\", the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. \n physical maintenance/repair, hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g.\n to support energy efficiency or resource usage.\n", "type": "string" }, "isRootCause": { -- GitLab From 522e38573ad9ccdb03a97617756c6337abc9b04a Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 18:26:12 +0100 Subject: [PATCH 108/141] updated reference version to 5.1.1 to VNF Package management tests --- ...essConfigurationForExternalArtifacts.robot | 20 +++++------ .../IndividualSubscription.robot | 18 +++++----- .../IndividualVNFPackage.robot | 26 +++++++------- .../IndividualVNFPackageArtifacts.robot | 26 +++++++------- .../ManifestInIndividualVNFPackage.robot | 20 +++++------ .../NotificationEndpoint.robot | 4 +-- .../Notifications.robot | 6 ++-- .../Subscriptions.robot | 26 +++++++------- .../VNFDInIndividualVNFPackage.robot | 20 +++++------ .../VNFPackageArtifacts.robot | 36 +++++++++---------- .../VNFPackageContent.robot | 26 +++++++------- .../VNFPackageContentViaURI.robot | 16 ++++----- .../VNFPackages.robot | 36 +++++++++---------- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 6 ++-- 14 files changed, 143 insertions(+), 143 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot b/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot index 2bfc5170..8b631c34 100644 --- a/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot @@ -11,7 +11,7 @@ Get Access configuration for external artifacts ... Test title: Get Access configuration for external artifacts ... Test objective: The objective is to test the GET method reads the access configuration information that is used by the NFVO to get the content of external VNF package artifacts and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Access configuration for external artifacts - Not Found ... Test title: Get Access configuration for external artifacts - Not Found ... Test objective: The objective is to test that the retrieval of access configuration information that is used by the NFVO to get the content of external VNF package artifacts fails because resource is not present. ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT Access configuration for external artifacts ... Test title: Access configuration for external artifacts ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Access configuration for external artifacts - Downloading ... Test title: Access configuration for external artifacts - Downloading ... Test objective: The objective is to test that VNF package has been uploaded successfully previously, to indicate that the access configuration information has been stored successfully by the NFVO and the NFVO now starts downloading external artifacts. ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Access configuration for external artifacts - Conflict ... Test title: Access configuration for external artifacts ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute is neither "CREATED" nor "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ POST Access configuration for external artifacts - Method not implemented ... Test title: POST Access configuration for external artifacts - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create access configuration for external artifacts ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ PATCH Access configuration for external artifacts - Method not implemented ... Test title: PATCH Access configuration for external artifacts - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update access configuration for external artifacts ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ DELETE Access configuration for external artifacts - Method not implemented ... Test title: DELETE Access configuration for external artifacts - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete access configuration for external artifacts ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ Get Access configuration for external artifacts with permitted authorization sco ... Test title: Get Access configuration for external artifacts with permitted authorization scope ... Test objective: The objective is to test the GET method reads the access configuration information that is used by the NFVO to get the content of external VNF package artifacts with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ Get Access configuration for external artifacts with not permitted authorization ... Test title: Get Access configuration for external artifacts with not permitted authorization scope ... Test objective: The objective is to test that the GET method to read the access configuration information fails when using not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot index 1a27c4e7..1da33107 100644 --- a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual VNF Package Subscription ... Test title: GET Individual VNF Package Subscription ... Test objective: The objective is to test the retrieval of individual VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Individual VNF Package Subscription with invalid resource identifier ... Test title: GET Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ DELETE Individual VNF Package Subscription with invalid resource identifier ... Test title: DELETE Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ POST Individual VNF Package Subscription - Method not implemented ... Test title: POST Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Package Subscription ... Pre-conditions: none - ... Reference: Clause 9.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Individual VNF Package Subscription - Method not implemented ... Test title: PUT Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Individual VNF Package Subscription - Method not implemented ... Test title: PATCH Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Individual VNF Package Subscription ... Test title: DELETE Individual VNF Package Subscription ... Test objective: The objective is to test the deletion of an individual VNF package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Subscription is not available anymore in the NFVO @@ -101,7 +101,7 @@ GET Individual VNF Package Subscription with permitted authorization scope ... Test title: GET Individual VNF Package Subscription with permitted authorization scope ... Test objective: The objective is to test the retrieval of individual VNF package subscription with permitted authorization scope ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ GET Individual VNF Package Subscription with not permitted authorization scope ... Test title: GET Individual VNF Package Subscription with not permitted authorization scope ... Test objective: The objective is to test the retrieval of individual VNF package subscription fails when using not permitted authorization scope ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot index 3b071cb1..a1db021a 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -11,7 +11,7 @@ GET Individual VNF Package ... Test title: GET Individual VNF Package ... Test objective: The objective is to test the retrieval of an individual VNF package information perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Individual VNF Package with invalid resource identifier ... Test title: GET Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Individual VNF Package - Method not implemented ... Test title: POST Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Individual VNF Package - Method not implemented ... Test title: PUT Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ Disable Individual VNF Package ... Test title: Disable Individual VNF Package ... Test objective: The objective is to test the disabling of an individual VNF Package and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state. - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is in operational state DISABLED @@ -77,7 +77,7 @@ Disable Individual VNF Package with conflict due to operational state DISABLED ... Test title: Disable Individual VNF Package with conflict due to operational state DISABLED ... Test objective: The objective is to test that disabling an individual VNF Package that is already in DISABLED operational state fails and perform a JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.5.2.5). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ Enable Individual VNF Package ... Test title: Enable Individual VNF Package ... Test objective: The objective is to test the enabling of an individual VNF Package and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.5.2.5). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is in operational state ENABLED @@ -104,7 +104,7 @@ Enable Individual VNF Package with conflict due to operational state ENABLED ... Test title: Enable Individual VNF Package with conflict due to operational state ENABLED ... Test objective: The objective is to test that enabling an individual VNF Package that is already in ENABLED operational state fails and perform a JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.5.2.7). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ DELETE Individual VNF Package ... Test title: DELETE Individual VNF Package ... Test objective: The objective is to test the deletion of an individual VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO in DISABLED operational state - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not available anymore in the NFVO @@ -130,7 +130,7 @@ DELETE Individual VNF Package in operational state ENABLED ... Test title: DELETE Individual VNF Package in operational state ENABLED ... Test objective: The objective is to test that the deletion of an individual VNF Package in operational state ENABLED fails. The test also performs a JSON schema validation of the failed operation HTTP response. ... Pre-conditions: One or more VNF Package are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.7). - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not deleted by the failed operation. @@ -144,7 +144,7 @@ DELETE Individual VNF Package used for instantiated VNF instances ... Test title: DELETE Individual VNF Package used for instantiated VNF instances ... Test objective: The objective is to test that the deletion of an individual VNF Package that is used in instantiated VNF instances fails. The test also performs a JSON schema validation of the failed operation HTTP response. ... Pre-conditions: One or more VNF instances are instantiated based on the concerned VNF package. - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not deleted by the failed operation. @@ -158,7 +158,7 @@ Disable Individual VNF Package with permitted authorization scope ... Test title: Disable Individual VNF Package with permitted authorization scope ... Test objective: The objective is to test the disabling of an individual VNF Package with permitted authorization scope ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state. - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is in operational state DISABLED @@ -172,7 +172,7 @@ Disable Individual VNF Package with not permitted authorization scope ... Test title: Disable Individual VNF Package with not permitted authorization scope ... Test objective: The objective is to test that the disabling of an individual VNF Package fails when using not permitted authorization scope ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state. - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot index e776f025..348a32cc 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot @@ -11,7 +11,7 @@ GET Individual VNF Package Artifact ... Test title: GET Individual VNF Package Artifact ... Test objective: The objective is to test the retrieval of an individual VNF package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual VNF Package Artifact in octet stream format ... Test title: GET Individual VNF Package Artifact in octet stream format ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -36,7 +36,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -50,7 +50,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO not supporting R ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package artifact. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -62,7 +62,7 @@ GET Individual VNF Package Artifact with invalid Range Request ... Test title: GET Individual VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -74,7 +74,7 @@ GET Individual VNF Package Artifact with invalid resource identifier ... Test title: GET Individual VNF Package Artifact with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ GET Individual VNF Package Artifact with conflict due to onboarding state ... Test title: GET Individual VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Individual VNF Package Artifact - Method not implemented ... Test title: POST Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 9.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ PUT Individual VNF Package Artifact - Method not implemented ... Test title: PUT Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ PATCH Individual VNF Package Artifact - Method not implemented ... Test title: PATCH Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -136,7 +136,7 @@ DELETE Individual VNF Package Artifact - Method not implemented ... Test title: DELETE Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ GET Individual VNF Package Artifact with permitted authorization scope ... Test title: GET Individual VNF Package Artifact with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF package artifact with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,7 @@ GET Individual VNF Package Artifact with not permitted authorization scope ... Test title: GET Individual VNF Package Artifact with not permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF package artifact fails when using not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot index 1815de9b..87d165b9 100644 --- a/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot @@ -11,7 +11,7 @@ Get Manifest in Individual VNF Package ... Test title: Get Manifest in Individual VNF Package ... Test objective: The objective is to test that content of manifest within a NVF Package is read successfully. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Manifest in Individual VNF Package with security information ... Test title: Get Manifest in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of the Manifest in individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get Manifest in Individual VNF Package - Not Acceptable ... Test title: Get Manifest in Individual VNF Package - Not Acceptable ... Test objective: The objective is to test that the "Accept" header is not compatible with Content type "application/zip" but "incude_signature" is provided.\ ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ Get Manifest in Individual VNF Package - Conflict ... Test title: Get Manifest in Individual VNF Package - Conflict ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the resource. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ POST Manifest in Individual VNF Package - Method not implemented ... Test title: POST Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new Manifest ... Pre-conditions: none - ... Reference: Clause 9.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PUT Manifest in Individual VNF Package - Method not implemented ... Test title: PUT Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a Manifest ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ PATCH Manifest in Individual VNF Package - Method not implemented ... Test title: PATCH Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a Manifest ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ DELETE Manifest in Individual VNF Package - Method not implemented ... Test title: DELETE Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a Manifest ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ Get Manifest in Individual VNF Package with permitted authorization scope ... Test title: Get Manifest in Individual VNF Package with permitted authorization scope ... Test objective: The objective is to test that content of manifest within a NVF Package is read successfully with permitted authorization scope. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ Get Manifest in Individual VNF Package with not permitted authorization scope ... Test title: Get Manifest in Individual VNF Package with not permitted authorization scope ... Test objective: The objective is to test that content of manifest within a NVF Package fails when using not permitted authorization scope. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/NotificationEndpoint.robot b/SOL005/VNFPackageManagement-API/NotificationEndpoint.robot index edb0d5a5..1c3e46bf 100644 --- a/SOL005/VNFPackageManagement-API/NotificationEndpoint.robot +++ b/SOL005/VNFPackageManagement-API/NotificationEndpoint.robot @@ -14,7 +14,7 @@ VNF Package Onboarding Notification ... Test title: VNF Package Onboarding Notification ... Test objective: The objective is to test that VNF Package Onboarding Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ VNF Package Change Notification ... Test title: VNF Package Change Notification ... Test objective: The objective is to test that VNF Package Change Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/Notifications.robot b/SOL005/VNFPackageManagement-API/Notifications.robot index f31ef8dc..b7618d1d 100644 --- a/SOL005/VNFPackageManagement-API/Notifications.robot +++ b/SOL005/VNFPackageManagement-API/Notifications.robot @@ -16,7 +16,7 @@ VNF Package Onboarding Notification ... Test title: VNF Package Onboarding Notification ... Test objective: The objective is to test the dispatch of VNF Package Onboarding notification when the VNF package onboarding operation is successfully completed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ VNF Package Operational State Change Notification ... Test title: VNF Package Operational State Change Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package operational state is modified, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ VNF Package Deletion Notification ... Test title: VNF Package Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package is deleted on the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/Subscriptions.robot b/SOL005/VNFPackageManagement-API/Subscriptions.robot index e64445da..e210a475 100644 --- a/SOL005/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL005/VNFPackageManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ Get All VNF Package Subscriptions ... Test title: GET all VNF Package Subscriptions ... Test objective: The objective is to test the retrieval of all VNF package subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Get VNF Package Subscriptions with attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF package subscriptions using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ Get VNF Package Subscriptions with invalid attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filters ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET VNF Package Subscription with invalid resource endpoint ... Test title: GET VNF Package Subscription with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF package subscriptions fails when using invalid resource endpoint. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ Create new VNF Package subscription ... Test title: Create new VNF Package subscription ... Test objective: The objective is to test the creation of a new VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF package subscription is successfully set and it matches the issued subscription @@ -85,7 +85,7 @@ Create duplicated VNF Package subscription with NFVO not creating duplicated sub ... Test title: Create duplicated VNF Package subscription with NFVO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF package subscription and check that no new subscription is created by the NFVO and a link to the original subscription is returned ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing VNF package subscription returned is available in the NFVO @@ -101,7 +101,7 @@ Create duplicated VNF Package subscription with NFVO creating duplicated subscri ... Test title: Create duplicated VNF Package subscription with NFVO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated VNF package subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated VNF package subscription is successfully set and it matches the issued subscription @@ -116,7 +116,7 @@ PUT VNF Package Subscriptions - Method not implemented ... Test title: PUT VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ PATCH VNF Package Subscriptions - Method not implemented ... Test title: PATCH VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ Get All VNF Package Subscriptions as Paged Response ... Test title: GET all VNF Package Subscriptions as Paged Response ... Test objective: The objective is to test the retrieval of all VNF package subscriptions as paged response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ Get VNF Package Subscriptions - Bad Request Response too Big ... Test title: Get VNF Package Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -177,7 +177,7 @@ Get All VNF Package Subscriptions with permitted authorization scope ... Test title: GET all VNF Package Subscriptions with permitted authorization scope ... Test objective: The objective is to test the retrieval of all VNF package subscriptions with permitted authorization scope ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -190,7 +190,7 @@ Get All VNF Package Subscriptions with not permitted authorization scope ... Test title: GET all VNF Package Subscriptions with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all VNF package subscriptions fails when using not permitted authorization scope ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index 6507002e..df555eb8 100644 --- a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -22,7 +22,7 @@ Get VNFD in Individual VNF Package in Zip Format ... Test title: Get VNFD in Individual VNF Package in Zip Format ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ Get VNFD in Individual VNF Package with invalid resource identifier ... Test title: Get VNFD in Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF Package fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ Get VNFD in Individual VNF Package with conflict due to onboarding state ... Test title: Get VNFD in Individual VNF Package with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF Package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ POST VNFD in Individual VNF Package - Method not implemented ... Test title: POST VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNFD ... Pre-conditions: none - ... Reference: Clause 9.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ PUT VNFD in Individual VNF Package - Method not implemented ... Test title: PUT VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ PATCH VNFD in Individual VNF Package - Method not implemented ... Test title: PATCH VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ DELETE VNFD in Individual VNF Package - Method not implemented ... Test title: DELETE VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ Get VNFD in Individual VNF Package with security information ... Test title: Get VNFD in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -155,7 +155,7 @@ Get VNFD in Individual VNF Package in Zip Format with permitted authorization sc ... Test title: Get VNFD in Individual VNF Package in Zip Format with permitted authorization scope ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -168,7 +168,7 @@ Get VNFD in Individual VNF Package in Zip Format with not permitted authorizatio ... Test title: Get VNFD in Individual VNF Package in Zip Format with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of the VNFD in zip format for an individual VNF package fails when using not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot index d7624582..6271a580 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -12,7 +12,7 @@ Get VNF Package Artifact ... Test title: Get VNF Package Artifact ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test title: Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test title: Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test title: Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ Get VNF Package Artifact with "include_signatures" parameter ... Test title: Get VNF Package Artifact with "include_signatures" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ Get VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test title: Get VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the GET request read the whole content of the archive containing the artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -91,7 +91,7 @@ Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artif ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artif ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ Get VNF Package Artifact with invalid URI parameters undifend select_non_mano_ar ... Test title: Get VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ Get VNF Package Artifact with conflict due to onboarding state ... Test title: Get VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -143,7 +143,7 @@ GET VNF Package Artifact with invalid Range Request ... Test title: GET VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -156,7 +156,7 @@ POST VNF Package Artifact - Method not implemented ... Test title: POST VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 9.4.5a.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -168,7 +168,7 @@ PUT VNF Package Artifact - Method not implemented ... Test title: PUT VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -180,7 +180,7 @@ PATCH VNF Package Artifact - Method not implemented ... Test title: PATCH VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -192,7 +192,7 @@ DELETE VNF Package Artifact - Method not implemented ... Test title: DELETE VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -204,7 +204,7 @@ Get VNF Package Artifact with "include_external_artifacts" parameter ... Test title: Get VNF Package Artifact with "include_external_artifacts" parameter ... Test objective: The objective is to test that GET request reads the whole content of the archive containing the external artifacts successfully when requested with "include_external_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -217,7 +217,7 @@ Get VNF Package Artifact with permitted authorization scope ... Test title: Get VNF Package Artifact with permitted authorization scope ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -230,7 +230,7 @@ Get VNF Package Artifact with not permitted authorization scope ... Test title: Get VNF Package Artifact with not permitted authorization scope ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files fails when using not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot index 78e7d82b..b32069b8 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot @@ -12,7 +12,7 @@ GET Individual VNF Package Content ... Test title: GET Individual VNF Package Content ... Test objective: The objective is to test the retrieval of an individual VNF package content and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Individual VNF Package Content with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Individual VNF Package Content with Range Request and NFVO not supporting Ra ... Test title: GET Individual VNF Package Content with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Individual VNF Package Content with invalid Range Request ... Test title: GET Individual VNF Package Content with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -65,7 +65,7 @@ GET Individual VNF Package Content with invalid resource identifier ... Test title: GET Individual VNF Package Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ GET Individual VNF Package Content with conflict due to onboarding state ... Test title: GET Individual VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ POST Individual VNF Package Content - Method not implemented ... Test title: POST Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package content ... Pre-conditions: none - ... Reference: Clause 9.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ Upload VNF Package Content ... Test title: Upload VNF Package Content ... Test objective: The objective is to test the upload of a VNF Package Content in Zip format. ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package content is successfully uploaded and available in the NFVO @@ -116,7 +116,7 @@ Upload VNF Package Content with conflict due to onboarding state ... Test title: Upload VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the VNF Package Content fails due to a conflict when the VNF Package is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF Package for which the content is requested is different from CREATED. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH Individual VNF Package Content - Method not implemented ... Test title: PATCH Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE Individual VNF Package Content - Method not implemented ... Test title: DELETE Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ Upload VNF Package Content with permitted authorization scope ... Test title: Upload VNF Package Content with permitted authorization scope ... Test objective: The objective is to test the upload of a VNF Package Content in Zip format with permitted authorization scope. ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package content is successfully uploaded and available in the NFVO @@ -166,7 +166,7 @@ Upload VNF Package Content with not permitted authorization scope ... Test title: Upload VNF Package Content with not permitted authorization scope ... Test objective: The objective is to test the upload of a VNF Package Content in Zip format fails when using not permitted authorization scope. ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot index 46655346..4e8e6add 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot @@ -12,7 +12,7 @@ Upload VNF Package Content from URI ... Test title: Upload VNF Package Content from URI ... Test objective: The objective is to test the upload of a VNF Package Content from URI. ... Pre-conditions: One or more VNF Packages are in onboarding state CREATED in the NFVO. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Upload VNF Package Content from URI with conflict due to onboarding state ... Test title: Upload VNF Package Content from URI with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the VNF Package Content from URI fails due to a conflict when the VNF Package is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF Package for which the content is requested is different from CREATED. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET Individual VNF Package Content from URI - Method not implemented ... Test title: GET Individual VNF Package Content from URI - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual VNF Package Content from URI - Method not implemented ... Test title: PUT Individual VNF Package Content from URI - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual VNF Package Content from URI - Method not implemented ... Test title: PATCH Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual VNF Package Content from URI - Method not implemented ... Test title: DELETE Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ Upload VNF Package Content from URI with permitted authorization scope ... Test title: Upload VNF Package Content from URI with permitted authorization scope ... Test objective: The objective is to test the upload of a VNF Package Content from URI with permitted authorization scope. ... Pre-conditions: One or more VNF Packages are in onboarding state CREATED in the NFVO. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ Upload VNF Package Content from URI with not permitted authorization scope ... Test title: Upload VNF Package Content from URI with not permitted authorization scope ... Test objective: The objective is to test the upload of a VNF Package Content from URI fails when using not permitted authorization scope. ... Pre-conditions: One or more VNF Packages are in onboarding state CREATED in the NFVO. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackages.robot b/SOL005/VNFPackageManagement-API/VNFPackages.robot index 0d7f69bd..6e431f43 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackages.robot @@ -11,7 +11,7 @@ GET all VNF Packages ... Test title: GET all VNF Packages ... Test objective: The objective is to test the retrieval of all the available VNF packages information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET VNF Packages with attribute-based filter ... Test title: GET VNF Packages with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF packages using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ GET VNF Packages with invalid attribute-based filter ... Test title: GET VNF Packages with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ Get all VNF Packages with malformed authorization token ... Test title: Get all VNF Packages Information with malformed authorization token ... Test objective: The objective is to test that the retrieval of VNF Packages fails when using malformed authorization token ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -67,7 +67,7 @@ Get all VNF Packages without authorization token ... Test title: Get all VNF Packages without authorization token ... Test objective: The objective is to test that the retrieval of VNF Packages fails when omitting the authorization token ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -79,7 +79,7 @@ GET VNF Packages with "all_fields" attribute selector ... Test title: GET VNF Packages with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ GET VNF Packages with "exclude_default" attribute selector ... Test title: GET VNF Packages with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -107,7 +107,7 @@ GET VNF Packages with "fields" attribute selector ... Test title: GET VNF Packages with fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none @@ -121,7 +121,7 @@ GET VNF Packages with "exclude_fields" attribute selector ... Test title: GET VNF Packages with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -135,7 +135,7 @@ GET all VNF Packages with invalid resource endpoint ... Test title: GET VNF Packages with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid resource endpoint ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ Create new VNF Package Resource ... Test title: Create new VNF Package Resource ... Test objective: The objective is to test the creation of a new VNF Package Resource and perform the JSON schema validation of the returned structure ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Resource is successfully created on the NFVO @@ -164,7 +164,7 @@ PUT all VNF Packages - Method not implemented ... Test title: PUT all VNF Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -176,7 +176,7 @@ PATCH all VNF Packages - Method not implemented ... Test title: PATCH all VNF Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -188,7 +188,7 @@ DELETE all VNF Packages - Method not implemented ... Test title: DELETE all VNF Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -200,7 +200,7 @@ GET all VNF Packages as Paged Response ... Test title: GET all VNF Packages as Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF packages information as paged response. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -213,7 +213,7 @@ GET VNF Packages - Bad Request Response too Big ... Test title: GET VNF Packages - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF packages fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -226,7 +226,7 @@ Create new VNF Package Resource with permitted authorization scope ... Test title: Create new VNF Package Resource with permitted authorization scope ... Test objective: The objective is to test the creation of a new VNF Package Resource with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Resource is successfully created on the NFVO @@ -242,7 +242,7 @@ Create new VNF Package Resource with not permitted authorization scope ... Test title: Create new VNF Package Resource with not permitted authorization scope ... Test objective: The objective is to test that the creation of a new VNF Package Resource fails when using not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index 250f1c70..2753aebf 100644 --- a/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -2,7 +2,7 @@ tosca_definitions_version: tosca_simple_yaml_1_3 description: "TST010 reference VNF-B" imports: - - https://forge.etsi.org/rep/nfv/SOL001/raw/v4.4.1/etsi_nfv_sol001_vnfd_types.yaml + - https://forge.etsi.org/rep/nfv/SOL001/raw/v5.1.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:v4.5.1' ] + default: [ 'etsivnfm:v5.1.1' ] interfaces: Vnflcm: type: "tosca.interfaces.nfv.Vnflcm" @@ -153,7 +153,7 @@ topology_template: flavour_id: "VNF-B_flavor" flavour_description: "VNF-B flavor" vnfm_info: - - etsivnfm:v2.3.1 + - etsivnfm:v5.1.1 interfaces: Vnflcm: type: "tosca.interfaces.nfv.Vnflcm" -- GitLab From c8950c61c891fc3a90e03a09dee50a6e7f141b2b Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 18:26:45 +0100 Subject: [PATCH 109/141] updated reference version to 5.1.1 to VNF Snapshot tests --- ...essConfigurationForExternalArtifacts.robot | 16 ++++----- .../BuildVNFSnapshotPackageContentTask.robot | 16 ++++----- ...ancelVNFSnapshotPackageOperationTask.robot | 16 ++++----- ...ExtractVNFSnapshotPackageContentTask.robot | 18 +++++----- .../IndividualVNFSnapshotPackage.robot | 20 +++++------ ...IndividualVNFSnapshotPackageArtifact.robot | 24 ++++++------- .../UploadVNFSnapshotPackageFromUriTask.robot | 16 ++++----- .../VNFSnapshotPackageContent.robot | 24 ++++++------- .../VNFSnapshotPackages.robot | 34 +++++++++---------- 9 files changed, 92 insertions(+), 92 deletions(-) diff --git a/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot b/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot index ea1b2824..64782ef1 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot @@ -7,7 +7,7 @@ POST Access Configuration for External Artifacts - Method not implemented ... Test title: POST Access Configuration for External Artifacts - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Access Configuration for External Artifacts ... Test title: GET Access Configuration for External Artifacts ... Test objective: The objective is to test that GET method reads the access configuration information that is used by the NFVO to get the content of external VNF snapshot package artifacts. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ PUT Access Configuration for External Artifacts ... Test title: PUT Access Configuration for External Artifacts ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ PUT Access Configuration for External Artifacts - Conflict ... Test title: PUT Access Configuration for External Artifacts - Conflict ... Test objective: The objective is to test that PUT method cannot provide the access configuration information to the NFVO when the VNF Snapshot Package resource is not in CREATED or ERROR state. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The "state" attribute of the "Individual VNF snapshot package" resources contains a value different from "CREATED" or "ERROR". ... Post-Conditions: none @@ -58,7 +58,7 @@ PATCH Access Configuration for External Artifacts - Method Not implemented ... Test title: PATCH Access Configuration for External Artifacts - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ DELETE Access Configuration for External Artifacts - Method Not implemented ... Test title: DELETE Access Configuration for External Artifacts - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ GET Access Configuration for External Artifacts with permitted authorization sco ... Test title: GET Access Configuration for External Artifacts with permitted authorization scope ... Test objective: The objective is to test that GET method reads the access configuration information that is used by the NFVO to get the content of external VNF snapshot package artifacts with permitted authorization scope. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ GET Access Configuration for External Artifacts with not permitted authorization ... Test title: GET Access Configuration for External Artifacts with not permitted authorization scope ... Test objective: The objective is to test that GET method fails to read the access configuration information that is used by the NFVO to get the content of external VNF snapshot package artifacts when using not permitted authorization scope. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot b/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot index fa6f50a0..4ea824dc 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot @@ -7,7 +7,7 @@ POST Build VNF Snapshot Package Content Task ... Test title: POST Build VNF Snapshot Package Content Task ... Test objective: The objective is to test that POST method provides the information for the NFVO to start building the content of a VNF snapshot package. ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ POST Build VNF Snapshot Package Content Task - Conflict ... Test title: POST Build VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate building of VNF Snapshot Package and the state of the VNF snapshot package resource is other than "CREATED". ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "CREATED". ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Build VNF Snapshot Package Content Task - Method Not implemented ... Test title: GET Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ PUT Build VNF Snapshot Package Content Task - Method Not implemented ... Test title: PUT Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ PATCH Build VNF Snapshot Package Content Task - Method Not implemented ... Test title: PATCH Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ DELETE Build VNF Snapshot Package Content Task - Method Not implemented ... Test title: DELETE Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ POST Build VNF Snapshot Package Content Task with permitted authorization scope ... Test title: POST Build VNF Snapshot Package Content Task with permitted authorization scope ... Test objective: The objective is to test that POST method provides the information for the NFVO to start building the content of a VNF snapshot package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ POST Build VNF Snapshot Package Content Task with not permitted authorization sc ... Test title: POST Build VNF Snapshot Package Content Task with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to provide the information for the NFVO to start building the content of a VNF snapshot package when using a not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot b/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot index a2d5855e..108d5c47 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot @@ -7,7 +7,7 @@ POST Cancel VNF Snapshot Package Content Task ... Test title: POST Cancel VNF Snapshot Package Content Task ... Test objective: The objective is to test that POST method provides the information for the NFVO to cancel the ongoing operation related to the content of a VNF snapshot package. ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ POST Cancel VNF Snapshot Package Content Task - Conflict ... Test title: POST Cancel VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to cancel a VNF Snapshot Package task and the state of the VNF snapshot package resource is other than "UPLOADING", "BUILDING", "PROCESSING" or "EXTRACTING". ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "UPLOADING", "BUILDING", "PROCESSING" or "EXTRACTING". ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test title: GET Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ PUT Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test title: PUT Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ PATCH Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test title: PATCH Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ DELETE Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test title: DELETE Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ POST Cancel VNF Snapshot Package Content Task with permitted authorization scope ... Test title: POST Cancel VNF Snapshot Package Content Task with permitted authorization scope ... Test objective: The objective is to test that POST method provides the information for the NFVO to cancel the ongoing operation related to the content of a VNF snapshot package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ POST Cancel VNF Snapshot Package Content Task with not permitted authorization s ... Test title: POST Cancel VNF Snapshot Package Content Task with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to provide the information for the NFVO to cancel the ongoing operation related to the content of a VNF snapshot package when using not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot b/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot index 70af5855..5bc57dc9 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot @@ -7,7 +7,7 @@ POST Extract VNF Snapshot Package Content Task ... Test title: POST Extract VNF Snapshot Package Content Task ... Test objective: The objective is to test that POST method provides the information for the NFVO to start extracting the content of a VNF snapshot package. ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ POST Extract VNF Snapshot Package Content Task - Conflict State ... Test title: POST Extract VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate extraction of VNF Snapshot Package and the state of the VNF snapshot package resource is other than "AVAILABLE". ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "AVAILABLE". ... Post-Conditions: none @@ -32,7 +32,7 @@ POST Extract VNF Snapshot Package Content Task - Invalid VnfInstanceId ... Test title: POST Extract VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate extraction of VNF Snapshot Package using an invalid VnfInstanceId in the request body. ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "CREATED". ... Post-Conditions: none @@ -45,7 +45,7 @@ GET Extract VNF Snapshot Package Content Task - Method Not implemented ... Test title: GET Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -57,7 +57,7 @@ PUT Extract VNF Snapshot Package Content Task - Method Not implemented ... Test title: PUT Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ PATCH Extract VNF Snapshot Package Content Task - Method Not implemented ... Test title: PATCH Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ DELETE Extract VNF Snapshot Package Content Task - Method Not implemented ... Test title: DELETE Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ POST Extract VNF Snapshot Package Content Task with permitted authorization scop ... Test title: POST Extract VNF Snapshot Package Content Task with permitted authorization scope ... Test objective: The objective is to test that POST method provides the information for the NFVO to start extracting the content of a VNF snapshot package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ POST Extract VNF Snapshot Package Content Task with not permitted authorization ... Test title: POST Extract VNF Snapshot Package Content Task with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to provide the information for the NFVO to start extracting the content of a VNF snapshot package when using not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot index 5d959c81..a8a979bb 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot @@ -7,7 +7,7 @@ POST Individual VNF Snapshot Package - Method not implemented ... Test title: POST Individual VNF Snapshot Package - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Information about an individual VNF Snapshot Package - SUCCESSFUL ... Test title: GET Information about an individual VNF Snapshot Package - SUCCESSFUL ... Test objective: The objective is to create a new VNF Snapshot Package resource ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Information about an individual VNF Snapshot Package - NOT FOUND ... Test title: GET Information about an individual VNF Snapshot Package - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot Package fails when using an invalid resource identifier. ... Pre-conditions: At least one individual VNF Snapshot Package is available in the NFV-MANO. - ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ PUT Individual VNF Snapshot Package - Method not implemented ... Test title: PUT Individual VNF Snapshot Package - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package not modified @@ -57,7 +57,7 @@ PATCH Individual VNF Snapshot Package - Modified ... Test title: PATCH Individual VNF Snapshot Package - Modified ... Test objective: The objective is to test that PATCH method updates the information of a VNF Snapshot package ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ PATCH Individual VNF Snapshot Package - Conflict ... Test title: PATCH Individual VNF Snapshot Package - Conflict ... Test objective: The objective is to test that PATCH method does not update the information of a VNF Snapshot package when the state of the VNF snapshot package resource is in a state other than CREATED, ERROR_EXTRACTING or AVAILABLE. ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is in a state other than CREATED, ERROR_EXTRACTING or AVAILABLE. ... Post-Conditions: none @@ -83,7 +83,7 @@ DELETE Individual VNF Snapshot Package ... Test title: DELETE Individual VNF Snapshot Package ... Test objective: The objective is to test that DELETE method deletes an individual VNF Snapshot Package resource ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package deleted @@ -95,7 +95,7 @@ DELETE Individual VNF Snapshot Package - Conflict ... Test title: DELETE Individual VNF Snapshot Package - Method Not im ... Test objective: The objective is to test that DELETE method does not delete a VNF Snapshot package when the state of the VNF snapshot package resource is in a state other than CREATED, ERROR or AVAILABLE. ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is in a state other than CREATED, ERROR or AVAILABLE. ... Post-Conditions: VNF Snapshot Package not deleted @@ -108,7 +108,7 @@ PATCH Individual VNF Snapshot Package with permitted authorization scope ... Test title: PATCH Individual VNF Snapshot Package with permitted authorization scope ... Test objective: The objective is to test that PATCH method updates the information of a VNF Snapshot package with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ PATCH Individual VNF Snapshot Package with not permitted authorization scope ... Test title: PATCH Individual VNF Snapshot Package with not permitted authorization scope ... Test objective: The objective is to test that PATCH method fails to update the information of a VNF Snapshot package when using a not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot index c4de7649..02a4f3ec 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot @@ -7,7 +7,7 @@ POST Individual VNF Snapshot Package Artifact - Method not implemented ... Test title: POST Individual VNF Snapshot Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Individual VNF Snapshot Package Artifact - Complete File ... Test title: GET Information about an individual VNF Snapshot Package - Complete File ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Individual VNF Snapshot Package Artifact - Partial Content ... Test title: GET Individual VNF Snapshot Package Artifact - Partial Content ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -47,7 +47,7 @@ GET Individual VNF Snapshot Package Artifact - Range Request Not Supported ... Test title: GET Information about an individual VNF Snapshot Package - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support range requests ... Post-Conditions: none @@ -60,7 +60,7 @@ GET Individual VNF Snapshot Package Artifact - Range Not Satisfiable ... Test title: GET Information about an individual VNF Snapshot Package - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -72,7 +72,7 @@ GET Individual VNF Snapshot Package Artifact - Conflict ... Test title: GET Information about an individual VNF Snapshot Package - Conflict ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Post-Conditions: none @@ -85,7 +85,7 @@ GET Individual VNF Snapshot Package Artifact - External Artifact ... Test title: GET Information about an individual VNF Snapshot Package - External Artifact ... Test objective: The objective is to test that correct response code is returned the referred "Individual VNF Snapshot package artifact" is external to the main VNF snapshot package file created from a build process. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The "Individual VNF Snapshot package artifact" is external to the main VNF snapshot package file created from a build process. ... Post-Conditions: none @@ -98,7 +98,7 @@ PUT Individual VNF Snapshot Package Artifact - Method not implemented ... Test title: PUT Individual VNF Snapshot Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package not modified @@ -110,7 +110,7 @@ PATCH Individual VNF Snapshot Package Artifact - Method Not implemented ... Test title: PATCH Individual VNF Snapshot Package Artifact ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ DELETE Individual VNF Snapshot Package Artifact - Method Not implemented ... Test title: DELETE Individual VNF Snapshot Package Artifact - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -134,7 +134,7 @@ GET Individual VNF Snapshot Package Artifact with permitted authorization scope ... Test title: GET Information about an individual VNF Snapshot Package with permitted authorization scope ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -147,7 +147,7 @@ GET Individual VNF Snapshot Package Artifact with not permitted authorization sc ... Test title: GET Information about an individual VNF Snapshot Package with not permitted authorization scope ... Test objective: The objective is to test that fetch the whole content of a VNF snapshot package using GET method fails when using not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot b/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot index 2c09646c..a1728455 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot @@ -7,7 +7,7 @@ POST Upload VNF Snapshot Package Content from URI ... Test title: POST Upload VNF Snapshot Package Content from URI ... Test objective: The objective is to test that POST method provides the information for the NFVO to get the content of a VNF snapshot package. ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ POST Upload VNF Snapshot Package Content from URI - Conflict ... Test title: POST Upload VNF Snapshot Package Content from URI - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate upload VNF Snapshot Package from URI task and the state of the VNF snapshot package resource is other than "CREATED" or "ERROR". ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "CREATED" or "ERROR". ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test title: GET Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ PUT Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test title: PUT Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ PATCH Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test title: PATCH Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ DELETE Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test title: DELETE Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ POST Upload VNF Snapshot Package Content from URI with permitted authorization s ... Test title: POST Upload VNF Snapshot Package Content from URI with permitted authorization scope ... Test objective: The objective is to test that POST method provides the information for the NFVO to get the content of a VNF snapshot package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ POST Upload VNF Snapshot Package Content from URI with not permitted authorizati ... Test title: POST Upload VNF Snapshot Package Content from URI with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to provide the information for the NFVO to get the content of a VNF snapshot package when using not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot index fbf7c770..aecd3fbd 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot @@ -7,7 +7,7 @@ POST VNF Snapshot Package Content - Method not implemented ... Test title: POST VNF Snapshot Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET VNF Snapshot Package Content - Complete File ... Test title: GET Information about an individual VNF Snapshot Package - Complete File ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET VNF Snapshot Package Content - Partial Content ... Test title: GET VNF Snapshot Package Content - Partial Content ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -47,7 +47,7 @@ GET VNF Snapshot Package Content - Range Request Not Supported ... Test title: GET Information about an individual VNF Snapshot Package - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support range requests ... Post-Conditions: none @@ -60,7 +60,7 @@ GET VNF Snapshot Package Content - Range Not Satisfiable ... Test title: GET Information about an individual VNF Snapshot Package - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -72,7 +72,7 @@ GET VNF Snapshot Package Content - Conflict ... Test title: GET Information about an individual VNF Snapshot Package - Conflict ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Post-Conditions: none @@ -85,7 +85,7 @@ PUT VNF Snapshot Package Content ... Test title: PUT VNF Snapshot Package Content ... Test objective: The objective is to test that PUT method uploads the content of VNF Snapshot Package. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT VNF Snapshot Package Content - Conflict ... Test title: PUT VNF Snapshot Package Content ... Test objective: The objective is to test that PUT method cannot upload the content of VNF Package when the state of the VNF snapshot package resource is other than "CREATED" or "ERROR".. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: the state of the VNF snapshot package resource is other than "CREATED" or "ERROR". ... Post-Conditions: none @@ -110,7 +110,7 @@ PATCH VNF Snapshot Package Content - Method Not implemented ... Test title: PATCH VNF Snapshot Package Content ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ DELETE VNF Snapshot Package Content - Method Not implemented ... Test title: DELETE VNF Snapshot Package Content - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -134,7 +134,7 @@ PUT VNF Snapshot Package Content with permitted authorization scope ... Test title: PUT VNF Snapshot Package Content with permitted authorization scope ... Test objective: The objective is to test that PUT method uploads the content of VNF Snapshot Package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -146,7 +146,7 @@ PUT VNF Snapshot Package Content with not permitted authorization scope ... Test title: PUT VNF Snapshot Package Content with not permitted authorization scope ... Test objective: The objective is to test that PUT method fails to upload the content of VNF Snapshot Package when using a not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot index b067424c..e7f81a2d 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot @@ -7,7 +7,7 @@ POST Create a VNF Snapshot Package ... Test title: POST Create a VNF Snapshot Package ... Test objective: The objective is to test that POST method creates a VNF Snapshot Package ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -20,7 +20,7 @@ GET information about multiple VNF Snapshot Packages ... Test title: GET information about multiple VNF Snapshot Packages ... Test objective: The objective is to get information about multiples VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -33,7 +33,7 @@ GET information about multiple VNF Snapshot Packages Bad Request Invalid attribu ... Test title: GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -46,7 +46,7 @@ GET information about multiple VNF Snapshot Packages Bad Request Invalid attribu ... Test title: GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -59,7 +59,7 @@ GET information about multiple VNF Snapshot Packages with "all_fields" attribute ... Test title: GET information about multiple VNF Snapshot Packages with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_default" attr ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ GET information about multiple VNF Snapshot Packages with "fields" attribute sel ... Test title: GET information about multiple VNF Snapshot Packages with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_default" and ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_fields" attri ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ GET VNF Snapshot Packages - Bad Request Response too Big ... Test title: GET VNF Snapshot Packages - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing VNF Snapshot Packages list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support paged response. ... Post-Conditions: none @@ -137,7 +137,7 @@ GET VNF Snapshot Packages as Paged Response ... Test title: GET VNF Snapshot Packages as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshot Packages as paged response. ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports paged response. ... Post-Conditions: none @@ -150,7 +150,7 @@ PUT VNF Snapshot Packages - Method not implemented ... Test title: PUT VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -162,7 +162,7 @@ PATCH VNF Snapshot Packages - Method not implemented ... Test title: PATCH VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ DELETE VNF Snapshot Packages - Method not implemented ... Test title: DELETE VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF snapshot package is not deleted @@ -186,7 +186,7 @@ GET information about multiple VNF Snapshot Packages with Filter ... Test title: GET information about multiple VNF Snapshot Packages with Filter ... Test objective: The objective is to get information about multiples VNF Snapshot Packages using filter ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -199,7 +199,7 @@ POST Create a VNF Snapshot Package with permitted authorization scope ... Test title: POST Create a VNF Snapshot Package with permitted authorization scope ... Test objective: The objective is to test that POST method creates a VNF Snapshot Package with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -212,7 +212,7 @@ POST Create a VNF Snapshot Package with not permitted authorization scope ... Test title: POST Create a VNF Snapshot Package with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to creat a VNF Snapshot Package when using a not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 9df181b7d9bfd1f3f9c053dbf811e8893b7bc9e4 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 18:31:08 +0100 Subject: [PATCH 110/141] Revert "updated reference version to 5.1.1 to VNF Package management tests" This reverts commit 8e16f258cff12f968428d54bb7d20b8a07a4dc9c. --- ...essConfigurationForExternalArtifacts.robot | 20 +++++------ .../IndividualSubscription.robot | 18 +++++----- .../IndividualVNFPackage.robot | 26 +++++++------- .../IndividualVNFPackageArtifacts.robot | 26 +++++++------- .../ManifestInIndividualVNFPackage.robot | 20 +++++------ .../NotificationEndpoint.robot | 4 +-- .../Notifications.robot | 6 ++-- .../Subscriptions.robot | 26 +++++++------- .../VNFDInIndividualVNFPackage.robot | 20 +++++------ .../VNFPackageArtifacts.robot | 36 +++++++++---------- .../VNFPackageContent.robot | 26 +++++++------- .../VNFPackageContentViaURI.robot | 16 ++++----- .../VNFPackages.robot | 36 +++++++++---------- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 6 ++-- 14 files changed, 143 insertions(+), 143 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot b/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot index 8b631c34..2bfc5170 100644 --- a/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot @@ -11,7 +11,7 @@ Get Access configuration for external artifacts ... Test title: Get Access configuration for external artifacts ... Test objective: The objective is to test the GET method reads the access configuration information that is used by the NFVO to get the content of external VNF package artifacts and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Access configuration for external artifacts - Not Found ... Test title: Get Access configuration for external artifacts - Not Found ... Test objective: The objective is to test that the retrieval of access configuration information that is used by the NFVO to get the content of external VNF package artifacts fails because resource is not present. ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT Access configuration for external artifacts ... Test title: Access configuration for external artifacts ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Access configuration for external artifacts - Downloading ... Test title: Access configuration for external artifacts - Downloading ... Test objective: The objective is to test that VNF package has been uploaded successfully previously, to indicate that the access configuration information has been stored successfully by the NFVO and the NFVO now starts downloading external artifacts. ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Access configuration for external artifacts - Conflict ... Test title: Access configuration for external artifacts ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute is neither "CREATED" nor "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ POST Access configuration for external artifacts - Method not implemented ... Test title: POST Access configuration for external artifacts - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create access configuration for external artifacts ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ PATCH Access configuration for external artifacts - Method not implemented ... Test title: PATCH Access configuration for external artifacts - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update access configuration for external artifacts ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ DELETE Access configuration for external artifacts - Method not implemented ... Test title: DELETE Access configuration for external artifacts - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete access configuration for external artifacts ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ Get Access configuration for external artifacts with permitted authorization sco ... Test title: Get Access configuration for external artifacts with permitted authorization scope ... Test objective: The objective is to test the GET method reads the access configuration information that is used by the NFVO to get the content of external VNF package artifacts with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ Get Access configuration for external artifacts with not permitted authorization ... Test title: Get Access configuration for external artifacts with not permitted authorization scope ... Test objective: The objective is to test that the GET method to read the access configuration information fails when using not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot index 1da33107..1a27c4e7 100644 --- a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual VNF Package Subscription ... Test title: GET Individual VNF Package Subscription ... Test objective: The objective is to test the retrieval of individual VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Individual VNF Package Subscription with invalid resource identifier ... Test title: GET Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ DELETE Individual VNF Package Subscription with invalid resource identifier ... Test title: DELETE Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ POST Individual VNF Package Subscription - Method not implemented ... Test title: POST Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Package Subscription ... Pre-conditions: none - ... Reference: Clause 9.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Individual VNF Package Subscription - Method not implemented ... Test title: PUT Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Individual VNF Package Subscription - Method not implemented ... Test title: PATCH Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Individual VNF Package Subscription ... Test title: DELETE Individual VNF Package Subscription ... Test objective: The objective is to test the deletion of an individual VNF package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Subscription is not available anymore in the NFVO @@ -101,7 +101,7 @@ GET Individual VNF Package Subscription with permitted authorization scope ... Test title: GET Individual VNF Package Subscription with permitted authorization scope ... Test objective: The objective is to test the retrieval of individual VNF package subscription with permitted authorization scope ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ GET Individual VNF Package Subscription with not permitted authorization scope ... Test title: GET Individual VNF Package Subscription with not permitted authorization scope ... Test objective: The objective is to test the retrieval of individual VNF package subscription fails when using not permitted authorization scope ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot index a1db021a..3b071cb1 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -11,7 +11,7 @@ GET Individual VNF Package ... Test title: GET Individual VNF Package ... Test objective: The objective is to test the retrieval of an individual VNF package information perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Individual VNF Package with invalid resource identifier ... Test title: GET Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Individual VNF Package - Method not implemented ... Test title: POST Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Individual VNF Package - Method not implemented ... Test title: PUT Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ Disable Individual VNF Package ... Test title: Disable Individual VNF Package ... Test objective: The objective is to test the disabling of an individual VNF Package and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state. - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is in operational state DISABLED @@ -77,7 +77,7 @@ Disable Individual VNF Package with conflict due to operational state DISABLED ... Test title: Disable Individual VNF Package with conflict due to operational state DISABLED ... Test objective: The objective is to test that disabling an individual VNF Package that is already in DISABLED operational state fails and perform a JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.5.2.5). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ Enable Individual VNF Package ... Test title: Enable Individual VNF Package ... Test objective: The objective is to test the enabling of an individual VNF Package and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.5.2.5). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is in operational state ENABLED @@ -104,7 +104,7 @@ Enable Individual VNF Package with conflict due to operational state ENABLED ... Test title: Enable Individual VNF Package with conflict due to operational state ENABLED ... Test objective: The objective is to test that enabling an individual VNF Package that is already in ENABLED operational state fails and perform a JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.5.2.7). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ DELETE Individual VNF Package ... Test title: DELETE Individual VNF Package ... Test objective: The objective is to test the deletion of an individual VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO in DISABLED operational state - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not available anymore in the NFVO @@ -130,7 +130,7 @@ DELETE Individual VNF Package in operational state ENABLED ... Test title: DELETE Individual VNF Package in operational state ENABLED ... Test objective: The objective is to test that the deletion of an individual VNF Package in operational state ENABLED fails. The test also performs a JSON schema validation of the failed operation HTTP response. ... Pre-conditions: One or more VNF Package are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.7). - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not deleted by the failed operation. @@ -144,7 +144,7 @@ DELETE Individual VNF Package used for instantiated VNF instances ... Test title: DELETE Individual VNF Package used for instantiated VNF instances ... Test objective: The objective is to test that the deletion of an individual VNF Package that is used in instantiated VNF instances fails. The test also performs a JSON schema validation of the failed operation HTTP response. ... Pre-conditions: One or more VNF instances are instantiated based on the concerned VNF package. - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not deleted by the failed operation. @@ -158,7 +158,7 @@ Disable Individual VNF Package with permitted authorization scope ... Test title: Disable Individual VNF Package with permitted authorization scope ... Test objective: The objective is to test the disabling of an individual VNF Package with permitted authorization scope ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state. - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is in operational state DISABLED @@ -172,7 +172,7 @@ Disable Individual VNF Package with not permitted authorization scope ... Test title: Disable Individual VNF Package with not permitted authorization scope ... Test objective: The objective is to test that the disabling of an individual VNF Package fails when using not permitted authorization scope ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state. - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot index 348a32cc..e776f025 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot @@ -11,7 +11,7 @@ GET Individual VNF Package Artifact ... Test title: GET Individual VNF Package Artifact ... Test objective: The objective is to test the retrieval of an individual VNF package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual VNF Package Artifact in octet stream format ... Test title: GET Individual VNF Package Artifact in octet stream format ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -36,7 +36,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -50,7 +50,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO not supporting R ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package artifact. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -62,7 +62,7 @@ GET Individual VNF Package Artifact with invalid Range Request ... Test title: GET Individual VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -74,7 +74,7 @@ GET Individual VNF Package Artifact with invalid resource identifier ... Test title: GET Individual VNF Package Artifact with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ GET Individual VNF Package Artifact with conflict due to onboarding state ... Test title: GET Individual VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Individual VNF Package Artifact - Method not implemented ... Test title: POST Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 9.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ PUT Individual VNF Package Artifact - Method not implemented ... Test title: PUT Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ PATCH Individual VNF Package Artifact - Method not implemented ... Test title: PATCH Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -136,7 +136,7 @@ DELETE Individual VNF Package Artifact - Method not implemented ... Test title: DELETE Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ GET Individual VNF Package Artifact with permitted authorization scope ... Test title: GET Individual VNF Package Artifact with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF package artifact with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,7 @@ GET Individual VNF Package Artifact with not permitted authorization scope ... Test title: GET Individual VNF Package Artifact with not permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF package artifact fails when using not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot index 87d165b9..1815de9b 100644 --- a/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot @@ -11,7 +11,7 @@ Get Manifest in Individual VNF Package ... Test title: Get Manifest in Individual VNF Package ... Test objective: The objective is to test that content of manifest within a NVF Package is read successfully. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Manifest in Individual VNF Package with security information ... Test title: Get Manifest in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of the Manifest in individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get Manifest in Individual VNF Package - Not Acceptable ... Test title: Get Manifest in Individual VNF Package - Not Acceptable ... Test objective: The objective is to test that the "Accept" header is not compatible with Content type "application/zip" but "incude_signature" is provided.\ ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ Get Manifest in Individual VNF Package - Conflict ... Test title: Get Manifest in Individual VNF Package - Conflict ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the resource. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ POST Manifest in Individual VNF Package - Method not implemented ... Test title: POST Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new Manifest ... Pre-conditions: none - ... Reference: Clause 9.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PUT Manifest in Individual VNF Package - Method not implemented ... Test title: PUT Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a Manifest ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ PATCH Manifest in Individual VNF Package - Method not implemented ... Test title: PATCH Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a Manifest ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ DELETE Manifest in Individual VNF Package - Method not implemented ... Test title: DELETE Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a Manifest ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ Get Manifest in Individual VNF Package with permitted authorization scope ... Test title: Get Manifest in Individual VNF Package with permitted authorization scope ... Test objective: The objective is to test that content of manifest within a NVF Package is read successfully with permitted authorization scope. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ Get Manifest in Individual VNF Package with not permitted authorization scope ... Test title: Get Manifest in Individual VNF Package with not permitted authorization scope ... Test objective: The objective is to test that content of manifest within a NVF Package fails when using not permitted authorization scope. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/NotificationEndpoint.robot b/SOL005/VNFPackageManagement-API/NotificationEndpoint.robot index 1c3e46bf..edb0d5a5 100644 --- a/SOL005/VNFPackageManagement-API/NotificationEndpoint.robot +++ b/SOL005/VNFPackageManagement-API/NotificationEndpoint.robot @@ -14,7 +14,7 @@ VNF Package Onboarding Notification ... Test title: VNF Package Onboarding Notification ... Test objective: The objective is to test that VNF Package Onboarding Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ VNF Package Change Notification ... Test title: VNF Package Change Notification ... Test objective: The objective is to test that VNF Package Change Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/Notifications.robot b/SOL005/VNFPackageManagement-API/Notifications.robot index b7618d1d..f31ef8dc 100644 --- a/SOL005/VNFPackageManagement-API/Notifications.robot +++ b/SOL005/VNFPackageManagement-API/Notifications.robot @@ -16,7 +16,7 @@ VNF Package Onboarding Notification ... Test title: VNF Package Onboarding Notification ... Test objective: The objective is to test the dispatch of VNF Package Onboarding notification when the VNF package onboarding operation is successfully completed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ VNF Package Operational State Change Notification ... Test title: VNF Package Operational State Change Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package operational state is modified, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ VNF Package Deletion Notification ... Test title: VNF Package Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package is deleted on the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/Subscriptions.robot b/SOL005/VNFPackageManagement-API/Subscriptions.robot index e210a475..e64445da 100644 --- a/SOL005/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL005/VNFPackageManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ Get All VNF Package Subscriptions ... Test title: GET all VNF Package Subscriptions ... Test objective: The objective is to test the retrieval of all VNF package subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Get VNF Package Subscriptions with attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF package subscriptions using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ Get VNF Package Subscriptions with invalid attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filters ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET VNF Package Subscription with invalid resource endpoint ... Test title: GET VNF Package Subscription with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF package subscriptions fails when using invalid resource endpoint. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ Create new VNF Package subscription ... Test title: Create new VNF Package subscription ... Test objective: The objective is to test the creation of a new VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF package subscription is successfully set and it matches the issued subscription @@ -85,7 +85,7 @@ Create duplicated VNF Package subscription with NFVO not creating duplicated sub ... Test title: Create duplicated VNF Package subscription with NFVO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF package subscription and check that no new subscription is created by the NFVO and a link to the original subscription is returned ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing VNF package subscription returned is available in the NFVO @@ -101,7 +101,7 @@ Create duplicated VNF Package subscription with NFVO creating duplicated subscri ... Test title: Create duplicated VNF Package subscription with NFVO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated VNF package subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated VNF package subscription is successfully set and it matches the issued subscription @@ -116,7 +116,7 @@ PUT VNF Package Subscriptions - Method not implemented ... Test title: PUT VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ PATCH VNF Package Subscriptions - Method not implemented ... Test title: PATCH VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ Get All VNF Package Subscriptions as Paged Response ... Test title: GET all VNF Package Subscriptions as Paged Response ... Test objective: The objective is to test the retrieval of all VNF package subscriptions as paged response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ Get VNF Package Subscriptions - Bad Request Response too Big ... Test title: Get VNF Package Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -177,7 +177,7 @@ Get All VNF Package Subscriptions with permitted authorization scope ... Test title: GET all VNF Package Subscriptions with permitted authorization scope ... Test objective: The objective is to test the retrieval of all VNF package subscriptions with permitted authorization scope ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -190,7 +190,7 @@ Get All VNF Package Subscriptions with not permitted authorization scope ... Test title: GET all VNF Package Subscriptions with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all VNF package subscriptions fails when using not permitted authorization scope ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index df555eb8..6507002e 100644 --- a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -22,7 +22,7 @@ Get VNFD in Individual VNF Package in Zip Format ... Test title: Get VNFD in Individual VNF Package in Zip Format ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ Get VNFD in Individual VNF Package with invalid resource identifier ... Test title: Get VNFD in Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF Package fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ Get VNFD in Individual VNF Package with conflict due to onboarding state ... Test title: Get VNFD in Individual VNF Package with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF Package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ POST VNFD in Individual VNF Package - Method not implemented ... Test title: POST VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNFD ... Pre-conditions: none - ... Reference: Clause 9.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ PUT VNFD in Individual VNF Package - Method not implemented ... Test title: PUT VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ PATCH VNFD in Individual VNF Package - Method not implemented ... Test title: PATCH VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ DELETE VNFD in Individual VNF Package - Method not implemented ... Test title: DELETE VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ Get VNFD in Individual VNF Package with security information ... Test title: Get VNFD in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -155,7 +155,7 @@ Get VNFD in Individual VNF Package in Zip Format with permitted authorization sc ... Test title: Get VNFD in Individual VNF Package in Zip Format with permitted authorization scope ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -168,7 +168,7 @@ Get VNFD in Individual VNF Package in Zip Format with not permitted authorizatio ... Test title: Get VNFD in Individual VNF Package in Zip Format with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of the VNFD in zip format for an individual VNF package fails when using not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot index 6271a580..d7624582 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -12,7 +12,7 @@ Get VNF Package Artifact ... Test title: Get VNF Package Artifact ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test title: Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test title: Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test title: Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ Get VNF Package Artifact with "include_signatures" parameter ... Test title: Get VNF Package Artifact with "include_signatures" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ Get VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test title: Get VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the GET request read the whole content of the archive containing the artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -91,7 +91,7 @@ Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artif ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artif ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ Get VNF Package Artifact with invalid URI parameters undifend select_non_mano_ar ... Test title: Get VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ Get VNF Package Artifact with conflict due to onboarding state ... Test title: Get VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -143,7 +143,7 @@ GET VNF Package Artifact with invalid Range Request ... Test title: GET VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -156,7 +156,7 @@ POST VNF Package Artifact - Method not implemented ... Test title: POST VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 9.4.5a.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -168,7 +168,7 @@ PUT VNF Package Artifact - Method not implemented ... Test title: PUT VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -180,7 +180,7 @@ PATCH VNF Package Artifact - Method not implemented ... Test title: PATCH VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -192,7 +192,7 @@ DELETE VNF Package Artifact - Method not implemented ... Test title: DELETE VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -204,7 +204,7 @@ Get VNF Package Artifact with "include_external_artifacts" parameter ... Test title: Get VNF Package Artifact with "include_external_artifacts" parameter ... Test objective: The objective is to test that GET request reads the whole content of the archive containing the external artifacts successfully when requested with "include_external_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -217,7 +217,7 @@ Get VNF Package Artifact with permitted authorization scope ... Test title: Get VNF Package Artifact with permitted authorization scope ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -230,7 +230,7 @@ Get VNF Package Artifact with not permitted authorization scope ... Test title: Get VNF Package Artifact with not permitted authorization scope ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files fails when using not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot index b32069b8..78e7d82b 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot @@ -12,7 +12,7 @@ GET Individual VNF Package Content ... Test title: GET Individual VNF Package Content ... Test objective: The objective is to test the retrieval of an individual VNF package content and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Individual VNF Package Content with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Individual VNF Package Content with Range Request and NFVO not supporting Ra ... Test title: GET Individual VNF Package Content with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Individual VNF Package Content with invalid Range Request ... Test title: GET Individual VNF Package Content with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -65,7 +65,7 @@ GET Individual VNF Package Content with invalid resource identifier ... Test title: GET Individual VNF Package Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ GET Individual VNF Package Content with conflict due to onboarding state ... Test title: GET Individual VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ POST Individual VNF Package Content - Method not implemented ... Test title: POST Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package content ... Pre-conditions: none - ... Reference: Clause 9.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ Upload VNF Package Content ... Test title: Upload VNF Package Content ... Test objective: The objective is to test the upload of a VNF Package Content in Zip format. ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package content is successfully uploaded and available in the NFVO @@ -116,7 +116,7 @@ Upload VNF Package Content with conflict due to onboarding state ... Test title: Upload VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the VNF Package Content fails due to a conflict when the VNF Package is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF Package for which the content is requested is different from CREATED. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH Individual VNF Package Content - Method not implemented ... Test title: PATCH Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE Individual VNF Package Content - Method not implemented ... Test title: DELETE Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ Upload VNF Package Content with permitted authorization scope ... Test title: Upload VNF Package Content with permitted authorization scope ... Test objective: The objective is to test the upload of a VNF Package Content in Zip format with permitted authorization scope. ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package content is successfully uploaded and available in the NFVO @@ -166,7 +166,7 @@ Upload VNF Package Content with not permitted authorization scope ... Test title: Upload VNF Package Content with not permitted authorization scope ... Test objective: The objective is to test the upload of a VNF Package Content in Zip format fails when using not permitted authorization scope. ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot index 4e8e6add..46655346 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot @@ -12,7 +12,7 @@ Upload VNF Package Content from URI ... Test title: Upload VNF Package Content from URI ... Test objective: The objective is to test the upload of a VNF Package Content from URI. ... Pre-conditions: One or more VNF Packages are in onboarding state CREATED in the NFVO. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Upload VNF Package Content from URI with conflict due to onboarding state ... Test title: Upload VNF Package Content from URI with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the VNF Package Content from URI fails due to a conflict when the VNF Package is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF Package for which the content is requested is different from CREATED. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET Individual VNF Package Content from URI - Method not implemented ... Test title: GET Individual VNF Package Content from URI - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual VNF Package Content from URI - Method not implemented ... Test title: PUT Individual VNF Package Content from URI - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual VNF Package Content from URI - Method not implemented ... Test title: PATCH Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual VNF Package Content from URI - Method not implemented ... Test title: DELETE Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ Upload VNF Package Content from URI with permitted authorization scope ... Test title: Upload VNF Package Content from URI with permitted authorization scope ... Test objective: The objective is to test the upload of a VNF Package Content from URI with permitted authorization scope. ... Pre-conditions: One or more VNF Packages are in onboarding state CREATED in the NFVO. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ Upload VNF Package Content from URI with not permitted authorization scope ... Test title: Upload VNF Package Content from URI with not permitted authorization scope ... Test objective: The objective is to test the upload of a VNF Package Content from URI fails when using not permitted authorization scope. ... Pre-conditions: One or more VNF Packages are in onboarding state CREATED in the NFVO. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackages.robot b/SOL005/VNFPackageManagement-API/VNFPackages.robot index 6e431f43..0d7f69bd 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackages.robot @@ -11,7 +11,7 @@ GET all VNF Packages ... Test title: GET all VNF Packages ... Test objective: The objective is to test the retrieval of all the available VNF packages information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET VNF Packages with attribute-based filter ... Test title: GET VNF Packages with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF packages using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ GET VNF Packages with invalid attribute-based filter ... Test title: GET VNF Packages with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ Get all VNF Packages with malformed authorization token ... Test title: Get all VNF Packages Information with malformed authorization token ... Test objective: The objective is to test that the retrieval of VNF Packages fails when using malformed authorization token ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -67,7 +67,7 @@ Get all VNF Packages without authorization token ... Test title: Get all VNF Packages without authorization token ... Test objective: The objective is to test that the retrieval of VNF Packages fails when omitting the authorization token ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -79,7 +79,7 @@ GET VNF Packages with "all_fields" attribute selector ... Test title: GET VNF Packages with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ GET VNF Packages with "exclude_default" attribute selector ... Test title: GET VNF Packages with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -107,7 +107,7 @@ GET VNF Packages with "fields" attribute selector ... Test title: GET VNF Packages with fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none @@ -121,7 +121,7 @@ GET VNF Packages with "exclude_fields" attribute selector ... Test title: GET VNF Packages with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -135,7 +135,7 @@ GET all VNF Packages with invalid resource endpoint ... Test title: GET VNF Packages with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid resource endpoint ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ Create new VNF Package Resource ... Test title: Create new VNF Package Resource ... Test objective: The objective is to test the creation of a new VNF Package Resource and perform the JSON schema validation of the returned structure ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Resource is successfully created on the NFVO @@ -164,7 +164,7 @@ PUT all VNF Packages - Method not implemented ... Test title: PUT all VNF Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -176,7 +176,7 @@ PATCH all VNF Packages - Method not implemented ... Test title: PATCH all VNF Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -188,7 +188,7 @@ DELETE all VNF Packages - Method not implemented ... Test title: DELETE all VNF Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -200,7 +200,7 @@ GET all VNF Packages as Paged Response ... Test title: GET all VNF Packages as Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF packages information as paged response. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -213,7 +213,7 @@ GET VNF Packages - Bad Request Response too Big ... Test title: GET VNF Packages - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF packages fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -226,7 +226,7 @@ Create new VNF Package Resource with permitted authorization scope ... Test title: Create new VNF Package Resource with permitted authorization scope ... Test objective: The objective is to test the creation of a new VNF Package Resource with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Resource is successfully created on the NFVO @@ -242,7 +242,7 @@ Create new VNF Package Resource with not permitted authorization scope ... Test title: Create new VNF Package Resource with not permitted authorization scope ... Test objective: The objective is to test that the creation of a new VNF Package Resource fails when using not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index 2753aebf..250f1c70 100644 --- a/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -2,7 +2,7 @@ tosca_definitions_version: tosca_simple_yaml_1_3 description: "TST010 reference VNF-B" imports: - - https://forge.etsi.org/rep/nfv/SOL001/raw/v5.1.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:v5.1.1' ] + default: [ 'etsivnfm:v4.5.1' ] interfaces: Vnflcm: type: "tosca.interfaces.nfv.Vnflcm" @@ -153,7 +153,7 @@ topology_template: flavour_id: "VNF-B_flavor" flavour_description: "VNF-B flavor" vnfm_info: - - etsivnfm:v5.1.1 + - etsivnfm:v2.3.1 interfaces: Vnflcm: type: "tosca.interfaces.nfv.Vnflcm" -- GitLab From ecd9b1d3a2b888b8abc62a86b13eef4a1959584d Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 18:32:45 +0100 Subject: [PATCH 111/141] Revert "updated reference version to 5.1.1 to VNF Snapshot tests" This reverts commit a3d2e86d58314448039baf4b8c1d46a3650ebef0. --- ...essConfigurationForExternalArtifacts.robot | 16 ++++----- .../BuildVNFSnapshotPackageContentTask.robot | 16 ++++----- ...ancelVNFSnapshotPackageOperationTask.robot | 16 ++++----- ...ExtractVNFSnapshotPackageContentTask.robot | 18 +++++----- .../IndividualVNFSnapshotPackage.robot | 20 +++++------ ...IndividualVNFSnapshotPackageArtifact.robot | 24 ++++++------- .../UploadVNFSnapshotPackageFromUriTask.robot | 16 ++++----- .../VNFSnapshotPackageContent.robot | 24 ++++++------- .../VNFSnapshotPackages.robot | 34 +++++++++---------- 9 files changed, 92 insertions(+), 92 deletions(-) diff --git a/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot b/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot index 64782ef1..ea1b2824 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot @@ -7,7 +7,7 @@ POST Access Configuration for External Artifacts - Method not implemented ... Test title: POST Access Configuration for External Artifacts - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Access Configuration for External Artifacts ... Test title: GET Access Configuration for External Artifacts ... Test objective: The objective is to test that GET method reads the access configuration information that is used by the NFVO to get the content of external VNF snapshot package artifacts. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ PUT Access Configuration for External Artifacts ... Test title: PUT Access Configuration for External Artifacts ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ PUT Access Configuration for External Artifacts - Conflict ... Test title: PUT Access Configuration for External Artifacts - Conflict ... Test objective: The objective is to test that PUT method cannot provide the access configuration information to the NFVO when the VNF Snapshot Package resource is not in CREATED or ERROR state. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The "state" attribute of the "Individual VNF snapshot package" resources contains a value different from "CREATED" or "ERROR". ... Post-Conditions: none @@ -58,7 +58,7 @@ PATCH Access Configuration for External Artifacts - Method Not implemented ... Test title: PATCH Access Configuration for External Artifacts - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ DELETE Access Configuration for External Artifacts - Method Not implemented ... Test title: DELETE Access Configuration for External Artifacts - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ GET Access Configuration for External Artifacts with permitted authorization sco ... Test title: GET Access Configuration for External Artifacts with permitted authorization scope ... Test objective: The objective is to test that GET method reads the access configuration information that is used by the NFVO to get the content of external VNF snapshot package artifacts with permitted authorization scope. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ GET Access Configuration for External Artifacts with not permitted authorization ... Test title: GET Access Configuration for External Artifacts with not permitted authorization scope ... Test objective: The objective is to test that GET method fails to read the access configuration information that is used by the NFVO to get the content of external VNF snapshot package artifacts when using not permitted authorization scope. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot b/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot index 4ea824dc..fa6f50a0 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot @@ -7,7 +7,7 @@ POST Build VNF Snapshot Package Content Task ... Test title: POST Build VNF Snapshot Package Content Task ... Test objective: The objective is to test that POST method provides the information for the NFVO to start building the content of a VNF snapshot package. ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ POST Build VNF Snapshot Package Content Task - Conflict ... Test title: POST Build VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate building of VNF Snapshot Package and the state of the VNF snapshot package resource is other than "CREATED". ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "CREATED". ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Build VNF Snapshot Package Content Task - Method Not implemented ... Test title: GET Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ PUT Build VNF Snapshot Package Content Task - Method Not implemented ... Test title: PUT Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ PATCH Build VNF Snapshot Package Content Task - Method Not implemented ... Test title: PATCH Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ DELETE Build VNF Snapshot Package Content Task - Method Not implemented ... Test title: DELETE Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ POST Build VNF Snapshot Package Content Task with permitted authorization scope ... Test title: POST Build VNF Snapshot Package Content Task with permitted authorization scope ... Test objective: The objective is to test that POST method provides the information for the NFVO to start building the content of a VNF snapshot package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ POST Build VNF Snapshot Package Content Task with not permitted authorization sc ... Test title: POST Build VNF Snapshot Package Content Task with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to provide the information for the NFVO to start building the content of a VNF snapshot package when using a not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot b/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot index 108d5c47..a2d5855e 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot @@ -7,7 +7,7 @@ POST Cancel VNF Snapshot Package Content Task ... Test title: POST Cancel VNF Snapshot Package Content Task ... Test objective: The objective is to test that POST method provides the information for the NFVO to cancel the ongoing operation related to the content of a VNF snapshot package. ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ POST Cancel VNF Snapshot Package Content Task - Conflict ... Test title: POST Cancel VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to cancel a VNF Snapshot Package task and the state of the VNF snapshot package resource is other than "UPLOADING", "BUILDING", "PROCESSING" or "EXTRACTING". ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "UPLOADING", "BUILDING", "PROCESSING" or "EXTRACTING". ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test title: GET Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ PUT Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test title: PUT Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ PATCH Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test title: PATCH Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ DELETE Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test title: DELETE Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ POST Cancel VNF Snapshot Package Content Task with permitted authorization scope ... Test title: POST Cancel VNF Snapshot Package Content Task with permitted authorization scope ... Test objective: The objective is to test that POST method provides the information for the NFVO to cancel the ongoing operation related to the content of a VNF snapshot package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ POST Cancel VNF Snapshot Package Content Task with not permitted authorization s ... Test title: POST Cancel VNF Snapshot Package Content Task with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to provide the information for the NFVO to cancel the ongoing operation related to the content of a VNF snapshot package when using not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot b/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot index 5bc57dc9..70af5855 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot @@ -7,7 +7,7 @@ POST Extract VNF Snapshot Package Content Task ... Test title: POST Extract VNF Snapshot Package Content Task ... Test objective: The objective is to test that POST method provides the information for the NFVO to start extracting the content of a VNF snapshot package. ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ POST Extract VNF Snapshot Package Content Task - Conflict State ... Test title: POST Extract VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate extraction of VNF Snapshot Package and the state of the VNF snapshot package resource is other than "AVAILABLE". ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "AVAILABLE". ... Post-Conditions: none @@ -32,7 +32,7 @@ POST Extract VNF Snapshot Package Content Task - Invalid VnfInstanceId ... Test title: POST Extract VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate extraction of VNF Snapshot Package using an invalid VnfInstanceId in the request body. ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "CREATED". ... Post-Conditions: none @@ -45,7 +45,7 @@ GET Extract VNF Snapshot Package Content Task - Method Not implemented ... Test title: GET Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -57,7 +57,7 @@ PUT Extract VNF Snapshot Package Content Task - Method Not implemented ... Test title: PUT Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ PATCH Extract VNF Snapshot Package Content Task - Method Not implemented ... Test title: PATCH Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ DELETE Extract VNF Snapshot Package Content Task - Method Not implemented ... Test title: DELETE Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ POST Extract VNF Snapshot Package Content Task with permitted authorization scop ... Test title: POST Extract VNF Snapshot Package Content Task with permitted authorization scope ... Test objective: The objective is to test that POST method provides the information for the NFVO to start extracting the content of a VNF snapshot package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ POST Extract VNF Snapshot Package Content Task with not permitted authorization ... Test title: POST Extract VNF Snapshot Package Content Task with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to provide the information for the NFVO to start extracting the content of a VNF snapshot package when using not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot index a8a979bb..5d959c81 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot @@ -7,7 +7,7 @@ POST Individual VNF Snapshot Package - Method not implemented ... Test title: POST Individual VNF Snapshot Package - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Information about an individual VNF Snapshot Package - SUCCESSFUL ... Test title: GET Information about an individual VNF Snapshot Package - SUCCESSFUL ... Test objective: The objective is to create a new VNF Snapshot Package resource ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Information about an individual VNF Snapshot Package - NOT FOUND ... Test title: GET Information about an individual VNF Snapshot Package - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot Package fails when using an invalid resource identifier. ... Pre-conditions: At least one individual VNF Snapshot Package is available in the NFV-MANO. - ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ PUT Individual VNF Snapshot Package - Method not implemented ... Test title: PUT Individual VNF Snapshot Package - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package not modified @@ -57,7 +57,7 @@ PATCH Individual VNF Snapshot Package - Modified ... Test title: PATCH Individual VNF Snapshot Package - Modified ... Test objective: The objective is to test that PATCH method updates the information of a VNF Snapshot package ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ PATCH Individual VNF Snapshot Package - Conflict ... Test title: PATCH Individual VNF Snapshot Package - Conflict ... Test objective: The objective is to test that PATCH method does not update the information of a VNF Snapshot package when the state of the VNF snapshot package resource is in a state other than CREATED, ERROR_EXTRACTING or AVAILABLE. ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is in a state other than CREATED, ERROR_EXTRACTING or AVAILABLE. ... Post-Conditions: none @@ -83,7 +83,7 @@ DELETE Individual VNF Snapshot Package ... Test title: DELETE Individual VNF Snapshot Package ... Test objective: The objective is to test that DELETE method deletes an individual VNF Snapshot Package resource ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package deleted @@ -95,7 +95,7 @@ DELETE Individual VNF Snapshot Package - Conflict ... Test title: DELETE Individual VNF Snapshot Package - Method Not im ... Test objective: The objective is to test that DELETE method does not delete a VNF Snapshot package when the state of the VNF snapshot package resource is in a state other than CREATED, ERROR or AVAILABLE. ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is in a state other than CREATED, ERROR or AVAILABLE. ... Post-Conditions: VNF Snapshot Package not deleted @@ -108,7 +108,7 @@ PATCH Individual VNF Snapshot Package with permitted authorization scope ... Test title: PATCH Individual VNF Snapshot Package with permitted authorization scope ... Test objective: The objective is to test that PATCH method updates the information of a VNF Snapshot package with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ PATCH Individual VNF Snapshot Package with not permitted authorization scope ... Test title: PATCH Individual VNF Snapshot Package with not permitted authorization scope ... Test objective: The objective is to test that PATCH method fails to update the information of a VNF Snapshot package when using a not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot index 02a4f3ec..c4de7649 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot @@ -7,7 +7,7 @@ POST Individual VNF Snapshot Package Artifact - Method not implemented ... Test title: POST Individual VNF Snapshot Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Individual VNF Snapshot Package Artifact - Complete File ... Test title: GET Information about an individual VNF Snapshot Package - Complete File ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Individual VNF Snapshot Package Artifact - Partial Content ... Test title: GET Individual VNF Snapshot Package Artifact - Partial Content ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -47,7 +47,7 @@ GET Individual VNF Snapshot Package Artifact - Range Request Not Supported ... Test title: GET Information about an individual VNF Snapshot Package - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support range requests ... Post-Conditions: none @@ -60,7 +60,7 @@ GET Individual VNF Snapshot Package Artifact - Range Not Satisfiable ... Test title: GET Information about an individual VNF Snapshot Package - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -72,7 +72,7 @@ GET Individual VNF Snapshot Package Artifact - Conflict ... Test title: GET Information about an individual VNF Snapshot Package - Conflict ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Post-Conditions: none @@ -85,7 +85,7 @@ GET Individual VNF Snapshot Package Artifact - External Artifact ... Test title: GET Information about an individual VNF Snapshot Package - External Artifact ... Test objective: The objective is to test that correct response code is returned the referred "Individual VNF Snapshot package artifact" is external to the main VNF snapshot package file created from a build process. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The "Individual VNF Snapshot package artifact" is external to the main VNF snapshot package file created from a build process. ... Post-Conditions: none @@ -98,7 +98,7 @@ PUT Individual VNF Snapshot Package Artifact - Method not implemented ... Test title: PUT Individual VNF Snapshot Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.10.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package not modified @@ -110,7 +110,7 @@ PATCH Individual VNF Snapshot Package Artifact - Method Not implemented ... Test title: PATCH Individual VNF Snapshot Package Artifact ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ DELETE Individual VNF Snapshot Package Artifact - Method Not implemented ... Test title: DELETE Individual VNF Snapshot Package Artifact - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.10.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -134,7 +134,7 @@ GET Individual VNF Snapshot Package Artifact with permitted authorization scope ... Test title: GET Information about an individual VNF Snapshot Package with permitted authorization scope ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -147,7 +147,7 @@ GET Individual VNF Snapshot Package Artifact with not permitted authorization sc ... Test title: GET Information about an individual VNF Snapshot Package with not permitted authorization scope ... Test objective: The objective is to test that fetch the whole content of a VNF snapshot package using GET method fails when using not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot b/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot index a1728455..2c09646c 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot @@ -7,7 +7,7 @@ POST Upload VNF Snapshot Package Content from URI ... Test title: POST Upload VNF Snapshot Package Content from URI ... Test objective: The objective is to test that POST method provides the information for the NFVO to get the content of a VNF snapshot package. ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ POST Upload VNF Snapshot Package Content from URI - Conflict ... Test title: POST Upload VNF Snapshot Package Content from URI - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate upload VNF Snapshot Package from URI task and the state of the VNF snapshot package resource is other than "CREATED" or "ERROR". ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "CREATED" or "ERROR". ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test title: GET Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ PUT Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test title: PUT Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ PATCH Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test title: PATCH Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ DELETE Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test title: DELETE Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ POST Upload VNF Snapshot Package Content from URI with permitted authorization s ... Test title: POST Upload VNF Snapshot Package Content from URI with permitted authorization scope ... Test objective: The objective is to test that POST method provides the information for the NFVO to get the content of a VNF snapshot package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ POST Upload VNF Snapshot Package Content from URI with not permitted authorizati ... Test title: POST Upload VNF Snapshot Package Content from URI with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to provide the information for the NFVO to get the content of a VNF snapshot package when using not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot index aecd3fbd..fbf7c770 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot @@ -7,7 +7,7 @@ POST VNF Snapshot Package Content - Method not implemented ... Test title: POST VNF Snapshot Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET VNF Snapshot Package Content - Complete File ... Test title: GET Information about an individual VNF Snapshot Package - Complete File ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET VNF Snapshot Package Content - Partial Content ... Test title: GET VNF Snapshot Package Content - Partial Content ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -47,7 +47,7 @@ GET VNF Snapshot Package Content - Range Request Not Supported ... Test title: GET Information about an individual VNF Snapshot Package - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support range requests ... Post-Conditions: none @@ -60,7 +60,7 @@ GET VNF Snapshot Package Content - Range Not Satisfiable ... Test title: GET Information about an individual VNF Snapshot Package - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -72,7 +72,7 @@ GET VNF Snapshot Package Content - Conflict ... Test title: GET Information about an individual VNF Snapshot Package - Conflict ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Post-Conditions: none @@ -85,7 +85,7 @@ PUT VNF Snapshot Package Content ... Test title: PUT VNF Snapshot Package Content ... Test objective: The objective is to test that PUT method uploads the content of VNF Snapshot Package. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT VNF Snapshot Package Content - Conflict ... Test title: PUT VNF Snapshot Package Content ... Test objective: The objective is to test that PUT method cannot upload the content of VNF Package when the state of the VNF snapshot package resource is other than "CREATED" or "ERROR".. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: the state of the VNF snapshot package resource is other than "CREATED" or "ERROR". ... Post-Conditions: none @@ -110,7 +110,7 @@ PATCH VNF Snapshot Package Content - Method Not implemented ... Test title: PATCH VNF Snapshot Package Content ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ DELETE VNF Snapshot Package Content - Method Not implemented ... Test title: DELETE VNF Snapshot Package Content - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -134,7 +134,7 @@ PUT VNF Snapshot Package Content with permitted authorization scope ... Test title: PUT VNF Snapshot Package Content with permitted authorization scope ... Test objective: The objective is to test that PUT method uploads the content of VNF Snapshot Package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -146,7 +146,7 @@ PUT VNF Snapshot Package Content with not permitted authorization scope ... Test title: PUT VNF Snapshot Package Content with not permitted authorization scope ... Test objective: The objective is to test that PUT method fails to upload the content of VNF Snapshot Package when using a not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot index e7f81a2d..b067424c 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot @@ -7,7 +7,7 @@ POST Create a VNF Snapshot Package ... Test title: POST Create a VNF Snapshot Package ... Test objective: The objective is to test that POST method creates a VNF Snapshot Package ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -20,7 +20,7 @@ GET information about multiple VNF Snapshot Packages ... Test title: GET information about multiple VNF Snapshot Packages ... Test objective: The objective is to get information about multiples VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -33,7 +33,7 @@ GET information about multiple VNF Snapshot Packages Bad Request Invalid attribu ... Test title: GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -46,7 +46,7 @@ GET information about multiple VNF Snapshot Packages Bad Request Invalid attribu ... Test title: GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -59,7 +59,7 @@ GET information about multiple VNF Snapshot Packages with "all_fields" attribute ... Test title: GET information about multiple VNF Snapshot Packages with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_default" attr ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ GET information about multiple VNF Snapshot Packages with "fields" attribute sel ... Test title: GET information about multiple VNF Snapshot Packages with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_default" and ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_fields" attri ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ GET VNF Snapshot Packages - Bad Request Response too Big ... Test title: GET VNF Snapshot Packages - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing VNF Snapshot Packages list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support paged response. ... Post-Conditions: none @@ -137,7 +137,7 @@ GET VNF Snapshot Packages as Paged Response ... Test title: GET VNF Snapshot Packages as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshot Packages as paged response. ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports paged response. ... Post-Conditions: none @@ -150,7 +150,7 @@ PUT VNF Snapshot Packages - Method not implemented ... Test title: PUT VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -162,7 +162,7 @@ PATCH VNF Snapshot Packages - Method not implemented ... Test title: PATCH VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ DELETE VNF Snapshot Packages - Method not implemented ... Test title: DELETE VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF snapshot package is not deleted @@ -186,7 +186,7 @@ GET information about multiple VNF Snapshot Packages with Filter ... Test title: GET information about multiple VNF Snapshot Packages with Filter ... Test objective: The objective is to get information about multiples VNF Snapshot Packages using filter ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -199,7 +199,7 @@ POST Create a VNF Snapshot Package with permitted authorization scope ... Test title: POST Create a VNF Snapshot Package with permitted authorization scope ... Test objective: The objective is to test that POST method creates a VNF Snapshot Package with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -212,7 +212,7 @@ POST Create a VNF Snapshot Package with not permitted authorization scope ... Test title: POST Create a VNF Snapshot Package with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to creat a VNF Snapshot Package when using a not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From fe0f0c764916862892b4c798e8e6a71cbf7e0d4e Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 18:34:12 +0100 Subject: [PATCH 112/141] updated reference version to 5.1.1 to VNF Snapshot tests - REDO --- ...essConfigurationForExternalArtifacts.robot | 20 +++++------ .../IndividualSubscription.robot | 18 +++++----- .../IndividualVNFPackage.robot | 26 +++++++------- .../IndividualVNFPackageArtifacts.robot | 26 +++++++------- .../ManifestInIndividualVNFPackage.robot | 20 +++++------ .../NotificationEndpoint.robot | 4 +-- .../Notifications.robot | 6 ++-- .../Subscriptions.robot | 26 +++++++------- .../VNFDInIndividualVNFPackage.robot | 20 +++++------ .../VNFPackageArtifacts.robot | 36 +++++++++---------- .../VNFPackageContent.robot | 26 +++++++------- .../VNFPackageContentViaURI.robot | 16 ++++----- .../VNFPackages.robot | 36 +++++++++---------- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 6 ++-- 14 files changed, 143 insertions(+), 143 deletions(-) diff --git a/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot b/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot index 2bfc5170..8b631c34 100644 --- a/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/AccessConfigurationForExternalArtifacts.robot @@ -11,7 +11,7 @@ Get Access configuration for external artifacts ... Test title: Get Access configuration for external artifacts ... Test objective: The objective is to test the GET method reads the access configuration information that is used by the NFVO to get the content of external VNF package artifacts and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Access configuration for external artifacts - Not Found ... Test title: Get Access configuration for external artifacts - Not Found ... Test objective: The objective is to test that the retrieval of access configuration information that is used by the NFVO to get the content of external VNF package artifacts fails because resource is not present. ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT Access configuration for external artifacts ... Test title: Access configuration for external artifacts ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Access configuration for external artifacts - Downloading ... Test title: Access configuration for external artifacts - Downloading ... Test objective: The objective is to test that VNF package has been uploaded successfully previously, to indicate that the access configuration information has been stored successfully by the NFVO and the NFVO now starts downloading external artifacts. ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Access configuration for external artifacts - Conflict ... Test title: Access configuration for external artifacts ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. ... Pre-conditions: the individual VNF package resource shall have been created, and the value of "onboardingState" attribute is neither "CREATED" nor "ERROR" - ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ POST Access configuration for external artifacts - Method not implemented ... Test title: POST Access configuration for external artifacts - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create access configuration for external artifacts ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ PATCH Access configuration for external artifacts - Method not implemented ... Test title: PATCH Access configuration for external artifacts - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update access configuration for external artifacts ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ DELETE Access configuration for external artifacts - Method not implemented ... Test title: DELETE Access configuration for external artifacts - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete access configuration for external artifacts ... Pre-conditions: none - ... Reference: Clause 9.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ Get Access configuration for external artifacts with permitted authorization sco ... Test title: Get Access configuration for external artifacts with permitted authorization scope ... Test objective: The objective is to test the GET method reads the access configuration information that is used by the NFVO to get the content of external VNF package artifacts with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ Get Access configuration for external artifacts with not permitted authorization ... Test title: Get Access configuration for external artifacts with not permitted authorization scope ... Test objective: The objective is to test that the GET method to read the access configuration information fails when using not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot index 1a27c4e7..1da33107 100644 --- a/SOL005/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL005/VNFPackageManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual VNF Package Subscription ... Test title: GET Individual VNF Package Subscription ... Test objective: The objective is to test the retrieval of individual VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Individual VNF Package Subscription with invalid resource identifier ... Test title: GET Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ DELETE Individual VNF Package Subscription with invalid resource identifier ... Test title: DELETE Individual VNF Package Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF package subscription fails when using an invalid resource identifier ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ POST Individual VNF Package Subscription - Method not implemented ... Test title: POST Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Package Subscription ... Pre-conditions: none - ... Reference: Clause 9.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Individual VNF Package Subscription - Method not implemented ... Test title: PUT Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Individual VNF Package Subscription - Method not implemented ... Test title: PATCH Individual VNF Package Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Individual VNF Package Subscription ... Test title: DELETE Individual VNF Package Subscription ... Test objective: The objective is to test the deletion of an individual VNF package subscription ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Subscription is not available anymore in the NFVO @@ -101,7 +101,7 @@ GET Individual VNF Package Subscription with permitted authorization scope ... Test title: GET Individual VNF Package Subscription with permitted authorization scope ... Test objective: The objective is to test the retrieval of individual VNF package subscription with permitted authorization scope ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ GET Individual VNF Package Subscription with not permitted authorization scope ... Test title: GET Individual VNF Package Subscription with not permitted authorization scope ... Test objective: The objective is to test the retrieval of individual VNF package subscription fails when using not permitted authorization scope ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot index 3b071cb1..a1db021a 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -11,7 +11,7 @@ GET Individual VNF Package ... Test title: GET Individual VNF Package ... Test objective: The objective is to test the retrieval of an individual VNF package information perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Individual VNF Package with invalid resource identifier ... Test title: GET Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Individual VNF Package - Method not implemented ... Test title: POST Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package ... Pre-conditions: none - ... Reference: Clause 9.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Individual VNF Package - Method not implemented ... Test title: PUT Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ Disable Individual VNF Package ... Test title: Disable Individual VNF Package ... Test objective: The objective is to test the disabling of an individual VNF Package and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state. - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is in operational state DISABLED @@ -77,7 +77,7 @@ Disable Individual VNF Package with conflict due to operational state DISABLED ... Test title: Disable Individual VNF Package with conflict due to operational state DISABLED ... Test objective: The objective is to test that disabling an individual VNF Package that is already in DISABLED operational state fails and perform a JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.5.2.5). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ Enable Individual VNF Package ... Test title: Enable Individual VNF Package ... Test objective: The objective is to test the enabling of an individual VNF Package and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.5.2.5). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is in operational state ENABLED @@ -104,7 +104,7 @@ Enable Individual VNF Package with conflict due to operational state ENABLED ... Test title: Enable Individual VNF Package with conflict due to operational state ENABLED ... Test objective: The objective is to test that enabling an individual VNF Package that is already in ENABLED operational state fails and perform a JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.5.2.7). - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ DELETE Individual VNF Package ... Test title: DELETE Individual VNF Package ... Test objective: The objective is to test the deletion of an individual VNF Package ... Pre-conditions: One or more VNF packages are onboarded in the NFVO in DISABLED operational state - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not available anymore in the NFVO @@ -130,7 +130,7 @@ DELETE Individual VNF Package in operational state ENABLED ... Test title: DELETE Individual VNF Package in operational state ENABLED ... Test objective: The objective is to test that the deletion of an individual VNF Package in operational state ENABLED fails. The test also performs a JSON schema validation of the failed operation HTTP response. ... Pre-conditions: One or more VNF Package are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.7). - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not deleted by the failed operation. @@ -144,7 +144,7 @@ DELETE Individual VNF Package used for instantiated VNF instances ... Test title: DELETE Individual VNF Package used for instantiated VNF instances ... Test objective: The objective is to test that the deletion of an individual VNF Package that is used in instantiated VNF instances fails. The test also performs a JSON schema validation of the failed operation HTTP response. ... Pre-conditions: One or more VNF instances are instantiated based on the concerned VNF package. - ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is not deleted by the failed operation. @@ -158,7 +158,7 @@ Disable Individual VNF Package with permitted authorization scope ... Test title: Disable Individual VNF Package with permitted authorization scope ... Test objective: The objective is to test the disabling of an individual VNF Package with permitted authorization scope ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state. - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package is in operational state DISABLED @@ -172,7 +172,7 @@ Disable Individual VNF Package with not permitted authorization scope ... Test title: Disable Individual VNF Package with not permitted authorization scope ... Test objective: The objective is to test that the disabling of an individual VNF Package fails when using not permitted authorization scope ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO in ENABLED operational state. - ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot index e776f025..348a32cc 100644 --- a/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/IndividualVNFPackageArtifacts.robot @@ -11,7 +11,7 @@ GET Individual VNF Package Artifact ... Test title: GET Individual VNF Package Artifact ... Test objective: The objective is to test the retrieval of an individual VNF package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual VNF Package Artifact in octet stream format ... Test title: GET Individual VNF Package Artifact in octet stream format ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -36,7 +36,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -50,7 +50,7 @@ GET Individual VNF Package Artifact with Range Request and NFVO not supporting R ... Test title: GET Individual VNF Package Artifact with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package artifact. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -62,7 +62,7 @@ GET Individual VNF Package Artifact with invalid Range Request ... Test title: GET Individual VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -74,7 +74,7 @@ GET Individual VNF Package Artifact with invalid resource identifier ... Test title: GET Individual VNF Package Artifact with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ GET Individual VNF Package Artifact with conflict due to onboarding state ... Test title: GET Individual VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package artifact fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Individual VNF Package Artifact - Method not implemented ... Test title: POST Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 9.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ PUT Individual VNF Package Artifact - Method not implemented ... Test title: PUT Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ PATCH Individual VNF Package Artifact - Method not implemented ... Test title: PATCH Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -136,7 +136,7 @@ DELETE Individual VNF Package Artifact - Method not implemented ... Test title: DELETE Individual VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ GET Individual VNF Package Artifact with permitted authorization scope ... Test title: GET Individual VNF Package Artifact with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF package artifact with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,7 @@ GET Individual VNF Package Artifact with not permitted authorization scope ... Test title: GET Individual VNF Package Artifact with not permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF package artifact fails when using not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot index 1815de9b..87d165b9 100644 --- a/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/ManifestInIndividualVNFPackage.robot @@ -11,7 +11,7 @@ Get Manifest in Individual VNF Package ... Test title: Get Manifest in Individual VNF Package ... Test objective: The objective is to test that content of manifest within a NVF Package is read successfully. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Manifest in Individual VNF Package with security information ... Test title: Get Manifest in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of the Manifest in individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ Get Manifest in Individual VNF Package - Not Acceptable ... Test title: Get Manifest in Individual VNF Package - Not Acceptable ... Test objective: The objective is to test that the "Accept" header is not compatible with Content type "application/zip" but "incude_signature" is provided.\ ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ Get Manifest in Individual VNF Package - Conflict ... Test title: Get Manifest in Individual VNF Package - Conflict ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the resource. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ POST Manifest in Individual VNF Package - Method not implemented ... Test title: POST Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new Manifest ... Pre-conditions: none - ... Reference: Clause 9.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PUT Manifest in Individual VNF Package - Method not implemented ... Test title: PUT Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a Manifest ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ PATCH Manifest in Individual VNF Package - Method not implemented ... Test title: PATCH Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a Manifest ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ DELETE Manifest in Individual VNF Package - Method not implemented ... Test title: DELETE Manifest in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a Manifest ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ Get Manifest in Individual VNF Package with permitted authorization scope ... Test title: Get Manifest in Individual VNF Package with permitted authorization scope ... Test objective: The objective is to test that content of manifest within a NVF Package is read successfully with permitted authorization scope. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ Get Manifest in Individual VNF Package with not permitted authorization scope ... Test title: Get Manifest in Individual VNF Package with not permitted authorization scope ... Test objective: The objective is to test that content of manifest within a NVF Package fails when using not permitted authorization scope. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/NotificationEndpoint.robot b/SOL005/VNFPackageManagement-API/NotificationEndpoint.robot index edb0d5a5..1c3e46bf 100644 --- a/SOL005/VNFPackageManagement-API/NotificationEndpoint.robot +++ b/SOL005/VNFPackageManagement-API/NotificationEndpoint.robot @@ -14,7 +14,7 @@ VNF Package Onboarding Notification ... Test title: VNF Package Onboarding Notification ... Test objective: The objective is to test that VNF Package Onboarding Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ VNF Package Change Notification ... Test title: VNF Package Change Notification ... Test objective: The objective is to test that VNF Package Change Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/Notifications.robot b/SOL005/VNFPackageManagement-API/Notifications.robot index f31ef8dc..b7618d1d 100644 --- a/SOL005/VNFPackageManagement-API/Notifications.robot +++ b/SOL005/VNFPackageManagement-API/Notifications.robot @@ -16,7 +16,7 @@ VNF Package Onboarding Notification ... Test title: VNF Package Onboarding Notification ... Test objective: The objective is to test the dispatch of VNF Package Onboarding notification when the VNF package onboarding operation is successfully completed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ VNF Package Operational State Change Notification ... Test title: VNF Package Operational State Change Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package operational state is modified, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ VNF Package Deletion Notification ... Test title: VNF Package Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Package Change notification when the VNF package is deleted on the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF package subscription for change notifications is available in the NFVO. - ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/Subscriptions.robot b/SOL005/VNFPackageManagement-API/Subscriptions.robot index e64445da..e210a475 100644 --- a/SOL005/VNFPackageManagement-API/Subscriptions.robot +++ b/SOL005/VNFPackageManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ Get All VNF Package Subscriptions ... Test title: GET all VNF Package Subscriptions ... Test objective: The objective is to test the retrieval of all VNF package subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Get VNF Package Subscriptions with attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF package subscriptions using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ Get VNF Package Subscriptions with invalid attribute-based filter ... Test title: Get VNF Package Subscriptions with attribute-based filters ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ GET VNF Package Subscription with invalid resource endpoint ... Test title: GET VNF Package Subscription with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF package subscriptions fails when using invalid resource endpoint. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ Create new VNF Package subscription ... Test title: Create new VNF Package subscription ... Test objective: The objective is to test the creation of a new VNF package subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF package subscription is successfully set and it matches the issued subscription @@ -85,7 +85,7 @@ Create duplicated VNF Package subscription with NFVO not creating duplicated sub ... Test title: Create duplicated VNF Package subscription with NFVO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF package subscription and check that no new subscription is created by the NFVO and a link to the original subscription is returned ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing VNF package subscription returned is available in the NFVO @@ -101,7 +101,7 @@ Create duplicated VNF Package subscription with NFVO creating duplicated subscri ... Test title: Create duplicated VNF Package subscription with NFVO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated VNF package subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated VNF package subscription is successfully set and it matches the issued subscription @@ -116,7 +116,7 @@ PUT VNF Package Subscriptions - Method not implemented ... Test title: PUT VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ PATCH VNF Package Subscriptions - Method not implemented ... Test title: PATCH VNF Package Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF package subscriptions ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ Get All VNF Package Subscriptions as Paged Response ... Test title: GET all VNF Package Subscriptions as Paged Response ... Test objective: The objective is to test the retrieval of all VNF package subscriptions as paged response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ Get VNF Package Subscriptions - Bad Request Response too Big ... Test title: Get VNF Package Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF package subscriptions fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -177,7 +177,7 @@ Get All VNF Package Subscriptions with permitted authorization scope ... Test title: GET all VNF Package Subscriptions with permitted authorization scope ... Test objective: The objective is to test the retrieval of all VNF package subscriptions with permitted authorization scope ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -190,7 +190,7 @@ Get All VNF Package Subscriptions with not permitted authorization scope ... Test title: GET all VNF Package Subscriptions with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all VNF package subscriptions fails when using not permitted authorization scope ... Pre-conditions: At least one VNF package subscription is available in the NFVO. - ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot index 6507002e..df555eb8 100644 --- a/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot +++ b/SOL005/VNFPackageManagement-API/VNFDInIndividualVNFPackage.robot @@ -22,7 +22,7 @@ Get VNFD in Individual VNF Package in Zip Format ... Test title: Get VNFD in Individual VNF Package in Zip Format ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ Get VNFD in Individual VNF Package with invalid resource identifier ... Test title: Get VNFD in Individual VNF Package with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF Package fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ Get VNFD in Individual VNF Package with conflict due to onboarding state ... Test title: Get VNFD in Individual VNF Package with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the VNFD for an individual VNF Package fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the VNFD is requested is different from ONBOARDED. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ POST VNFD in Individual VNF Package - Method not implemented ... Test title: POST VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNFD ... Pre-conditions: none - ... Reference: Clause 9.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ PUT VNFD in Individual VNF Package - Method not implemented ... Test title: PUT VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ PATCH VNFD in Individual VNF Package - Method not implemented ... Test title: PATCH VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ DELETE VNFD in Individual VNF Package - Method not implemented ... Test title: DELETE VNFD in Individual VNF Package - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNFD ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ Get VNFD in Individual VNF Package with security information ... Test title: Get VNFD in Individual VNF Package with security information ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package shall include in the ZIP archive the security information when requested with "include_signature" parameter, and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -155,7 +155,7 @@ Get VNFD in Individual VNF Package in Zip Format with permitted authorization sc ... Test title: Get VNFD in Individual VNF Package in Zip Format with permitted authorization scope ... Test objective: The objective is to test the retrieval of the VNFD in zip format for an individual VNF package with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -168,7 +168,7 @@ Get VNFD in Individual VNF Package in Zip Format with not permitted authorizatio ... Test title: Get VNFD in Individual VNF Package in Zip Format with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of the VNFD in zip format for an individual VNF package fails when using not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot index d7624582..6271a580 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageArtifacts.robot @@ -12,7 +12,7 @@ Get VNF Package Artifact ... Test title: Get VNF Package Artifact ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test title: Get VNF Package Artifact with "exclude_all_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain additional MANO artifacts when requested with "exclude_all_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test title: Get VNF Package Artifact with "exclude_all_non_mano_artifacts" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and it doesnot contain non-MANO Artifacts when requested with "exclude_all_non_mano_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test title: Get VNF Package Artifact with "select_non_mano_artifact_sets" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain non_MANO artifacts set when requested with "select_non_mano_artifact_sets" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ Get VNF Package Artifact with "include_signatures" parameter ... Test title: Get VNF Package Artifact with "include_signatures" parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ Get VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test title: Get VNF Package Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the GET request read the whole content of the archive containing the artifact files successfully when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -91,7 +91,7 @@ Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artif ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "select_non_mano_artifact_sets" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "select_non_mano_artifact_sets" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artif ... Test title: Get VNF Package Artifact with invalid URI parameters "exclude_all_non_mano_artifacts", "exclude_all_mano_artifactss" ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when both "exclude_all_non_mano_artifacts" and "exclude_all_mano_artifacts" are present in request ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ Get VNF Package Artifact with invalid URI parameters undifend select_non_mano_ar ... Test title: Get VNF Package Artifact with invalid URI parameters undefined select_non_mano_artifact_sets ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when one or more value provided in "select_non_mano_artifact_sets" are not provided in Manifest. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ Get VNF Package Artifact with conflict due to onboarding state ... Test title: Get VNF Package Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -143,7 +143,7 @@ GET VNF Package Artifact with invalid Range Request ... Test title: GET VNF Package Artifact with invalid Range Request ... Test objective: The objective is to test that the GET request to read the whole content of the archive containing the artifact files fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package artifact ... Post-Conditions: none @@ -156,7 +156,7 @@ POST VNF Package Artifact - Method not implemented ... Test title: POST VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package artifact ... Pre-conditions: none - ... Reference: Clause 9.4.5a.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -168,7 +168,7 @@ PUT VNF Package Artifact - Method not implemented ... Test title: PUT VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -180,7 +180,7 @@ PATCH VNF Package Artifact - Method not implemented ... Test title: PATCH VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -192,7 +192,7 @@ DELETE VNF Package Artifact - Method not implemented ... Test title: DELETE VNF Package Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package artifact ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -204,7 +204,7 @@ Get VNF Package Artifact with "include_external_artifacts" parameter ... Test title: Get VNF Package Artifact with "include_external_artifacts" parameter ... Test objective: The objective is to test that GET request reads the whole content of the archive containing the external artifacts successfully when requested with "include_external_artifacts" parameter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -217,7 +217,7 @@ Get VNF Package Artifact with permitted authorization scope ... Test title: Get VNF Package Artifact with permitted authorization scope ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully with permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -230,7 +230,7 @@ Get VNF Package Artifact with not permitted authorization scope ... Test title: Get VNF Package Artifact with not permitted authorization scope ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files fails when using not permitted authorization scope ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot index 78e7d82b..b32069b8 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContent.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContent.robot @@ -12,7 +12,7 @@ GET Individual VNF Package Content ... Test title: GET Individual VNF Package Content ... Test objective: The objective is to test the retrieval of an individual VNF package content and perform a validation that returned content is in zip format ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Individual VNF Package Content with Range Request and NFVO supporting Range ... Test title: GET Individual VNF Package Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual VNF package content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Individual VNF Package Content with Range Request and NFVO not supporting Ra ... Test title: GET Individual VNF Package Content with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual VNF package content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full VNF Package file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Individual VNF Package Content with invalid Range Request ... Test title: GET Individual VNF Package Content with invalid Range Request ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the VNF package file ... Post-Conditions: none @@ -65,7 +65,7 @@ GET Individual VNF Package Content with invalid resource identifier ... Test title: GET Individual VNF Package Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails when using an invalid resource identifier ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ GET Individual VNF Package Content with conflict due to onboarding state ... Test title: GET Individual VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual VNF package content fails due to a conflict when the VNF Package is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF package for which the content is requested is different from ONBOARDED. - ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ POST Individual VNF Package Content - Method not implemented ... Test title: POST Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF Package content ... Pre-conditions: none - ... Reference: Clause 9.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ Upload VNF Package Content ... Test title: Upload VNF Package Content ... Test objective: The objective is to test the upload of a VNF Package Content in Zip format. ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package content is successfully uploaded and available in the NFVO @@ -116,7 +116,7 @@ Upload VNF Package Content with conflict due to onboarding state ... Test title: Upload VNF Package Content with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the VNF Package Content fails due to a conflict when the VNF Package is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF Package for which the content is requested is different from CREATED. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH Individual VNF Package Content - Method not implemented ... Test title: PATCH Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE Individual VNF Package Content - Method not implemented ... Test title: DELETE Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ Upload VNF Package Content with permitted authorization scope ... Test title: Upload VNF Package Content with permitted authorization scope ... Test objective: The objective is to test the upload of a VNF Package Content in Zip format with permitted authorization scope. ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package content is successfully uploaded and available in the NFVO @@ -166,7 +166,7 @@ Upload VNF Package Content with not permitted authorization scope ... Test title: Upload VNF Package Content with not permitted authorization scope ... Test objective: The objective is to test the upload of a VNF Package Content in Zip format fails when using not permitted authorization scope. ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot index 46655346..4e8e6add 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageContentViaURI.robot @@ -12,7 +12,7 @@ Upload VNF Package Content from URI ... Test title: Upload VNF Package Content from URI ... Test objective: The objective is to test the upload of a VNF Package Content from URI. ... Pre-conditions: One or more VNF Packages are in onboarding state CREATED in the NFVO. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Upload VNF Package Content from URI with conflict due to onboarding state ... Test title: Upload VNF Package Content from URI with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the VNF Package Content from URI fails due to a conflict when the VNF Package is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the VNF Package for which the content is requested is different from CREATED. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET Individual VNF Package Content from URI - Method not implemented ... Test title: GET Individual VNF Package Content from URI - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual VNF Package Content from URI - Method not implemented ... Test title: PUT Individual VNF Package Content from URI - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual VNF Package Content from URI - Method not implemented ... Test title: PATCH Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual VNF Package Content from URI - Method not implemented ... Test title: DELETE Individual VNF Package Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete a VNF Package content from URI ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ Upload VNF Package Content from URI with permitted authorization scope ... Test title: Upload VNF Package Content from URI with permitted authorization scope ... Test objective: The objective is to test the upload of a VNF Package Content from URI with permitted authorization scope. ... Pre-conditions: One or more VNF Packages are in onboarding state CREATED in the NFVO. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ Upload VNF Package Content from URI with not permitted authorization scope ... Test title: Upload VNF Package Content from URI with not permitted authorization scope ... Test objective: The objective is to test the upload of a VNF Package Content from URI fails when using not permitted authorization scope. ... Pre-conditions: One or more VNF Packages are in onboarding state CREATED in the NFVO. - ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/VNFPackages.robot b/SOL005/VNFPackageManagement-API/VNFPackages.robot index 0d7f69bd..6e431f43 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackages.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackages.robot @@ -11,7 +11,7 @@ GET all VNF Packages ... Test title: GET all VNF Packages ... Test objective: The objective is to test the retrieval of all the available VNF packages information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET VNF Packages with attribute-based filter ... Test title: GET VNF Packages with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF packages using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ GET VNF Packages with invalid attribute-based filter ... Test title: GET VNF Packages with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ Get all VNF Packages with malformed authorization token ... Test title: Get all VNF Packages Information with malformed authorization token ... Test objective: The objective is to test that the retrieval of VNF Packages fails when using malformed authorization token ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -67,7 +67,7 @@ Get all VNF Packages without authorization token ... Test title: Get all VNF Packages without authorization token ... Test objective: The objective is to test that the retrieval of VNF Packages fails when omitting the authorization token ... Pre-conditions: One or more VNF Packages are onboarded in the NFVO. - ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.5.3.3, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -79,7 +79,7 @@ GET VNF Packages with "all_fields" attribute selector ... Test title: GET VNF Packages with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ GET VNF Packages with "exclude_default" attribute selector ... Test title: GET VNF Packages with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -107,7 +107,7 @@ GET VNF Packages with "fields" attribute selector ... Test title: GET VNF Packages with fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of fields attribute selector ... Post-Conditions: none @@ -121,7 +121,7 @@ GET VNF Packages with "exclude_fields" attribute selector ... Test title: GET VNF Packages with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of VNF packages with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -135,7 +135,7 @@ GET all VNF Packages with invalid resource endpoint ... Test title: GET VNF Packages with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF packages fails when using invalid resource endpoint ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ Create new VNF Package Resource ... Test title: Create new VNF Package Resource ... Test objective: The objective is to test the creation of a new VNF Package Resource and perform the JSON schema validation of the returned structure ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Resource is successfully created on the NFVO @@ -164,7 +164,7 @@ PUT all VNF Packages - Method not implemented ... Test title: PUT all VNF Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -176,7 +176,7 @@ PATCH all VNF Packages - Method not implemented ... Test title: PATCH all VNF Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -188,7 +188,7 @@ DELETE all VNF Packages - Method not implemented ... Test title: DELETE all VNF Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete existing VNF Packages ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -200,7 +200,7 @@ GET all VNF Packages as Paged Response ... Test title: GET all VNF Packages as Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF packages information as paged response. ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -213,7 +213,7 @@ GET VNF Packages - Bad Request Response too Big ... Test title: GET VNF Packages - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF packages fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more VNF packages are onboarded in the NFVO. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -226,7 +226,7 @@ Create new VNF Package Resource with permitted authorization scope ... Test title: Create new VNF Package Resource with permitted authorization scope ... Test objective: The objective is to test the creation of a new VNF Package Resource with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The VNF Package Resource is successfully created on the NFVO @@ -242,7 +242,7 @@ Create new VNF Package Resource with not permitted authorization scope ... Test title: Create new VNF Package Resource with not permitted authorization scope ... Test objective: The objective is to test that the creation of a new VNF Package Resource fails when using not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index 250f1c70..2753aebf 100644 --- a/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL005/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -2,7 +2,7 @@ tosca_definitions_version: tosca_simple_yaml_1_3 description: "TST010 reference VNF-B" imports: - - https://forge.etsi.org/rep/nfv/SOL001/raw/v4.4.1/etsi_nfv_sol001_vnfd_types.yaml + - https://forge.etsi.org/rep/nfv/SOL001/raw/v5.1.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:v4.5.1' ] + default: [ 'etsivnfm:v5.1.1' ] interfaces: Vnflcm: type: "tosca.interfaces.nfv.Vnflcm" @@ -153,7 +153,7 @@ topology_template: flavour_id: "VNF-B_flavor" flavour_description: "VNF-B flavor" vnfm_info: - - etsivnfm:v2.3.1 + - etsivnfm:v5.1.1 interfaces: Vnflcm: type: "tosca.interfaces.nfv.Vnflcm" -- GitLab From 7197aec8db4f481c70fafa4a0a695c0ff3aefdef Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 18:21:39 +0100 Subject: [PATCH 113/141] updated reference version to 5.1.1 to NS LCM Coordination tests --- .../CancelCoordinationActionTask.robot | 18 +++++++------- .../NSLCMCoordination-API/Coordinations.robot | 24 +++++++++---------- .../IndividualCoordinationAction.robot | 20 ++++++++-------- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/SOL005/NSLCMCoordination-API/CancelCoordinationActionTask.robot b/SOL005/NSLCMCoordination-API/CancelCoordinationActionTask.robot index 169db084..2baa2b15 100644 --- a/SOL005/NSLCMCoordination-API/CancelCoordinationActionTask.robot +++ b/SOL005/NSLCMCoordination-API/CancelCoordinationActionTask.robot @@ -13,7 +13,7 @@ Request a cancellation of an ongoing coordination action ... Test title: Request a cancellation of an ongoing coordination action ... Test objective: The objective is to test the request for the cancellation of an ongoing coordination task ... Pre-conditions: An ongoing coordination action is available - ... Reference: Clause 12.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ Request a cancellation of a finished coordination action ... Test title: Request a cancellation of a finished coordination action ... Test objective: The objective is to test the request for the cancellation of a finished coordination action ... Pre-conditions: A finished coordination action is available - ... Reference: Clause 12.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ Request a cancellation of an ongoing coordination action without authentication ... Test title: Request a cancellation of an ongoing coordination action without authentication ... Test objective: The objective is to test the failure of the request for a cancellation of a coordination task when no authentication is used ... Pre-conditions: none - ... Reference: Clause 12.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET information about a cancellation of an ongoing coordination action - method ... Test title: GET information about a cancellation of an ongoing coordination action - method not implemented ... Test objective: The objective is to test that the GET method is not allowed to retrieve cancellation details of an ongoing coordination action ... Pre-conditions: A cancellation task has been activated - ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ PUT information about a cancellation of an ongoing coordination action - method ... Test title: PUT information about a cancellation of an ongoing coordination action - method not implemented ... Test objective: The objective is to test that the PUT method is not allowed to modify cancellation details of an ongoing coordination action ... Pre-conditions: A cancellation task has been activated - ... Reference: Clause 12.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ PATCH information about a cancellation of an ongoing coordination action - metho ... Test title: PATCH information about a cancellation of an ongoing coordination action - method not implemented ... Test objective: he objective is to test that the PATCH method is not allowed to modify cancellation details of an ongoing coordination action ... Pre-conditions: A cancellation task has been activated - ... Reference: Clause 12.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ DELETE information about a cancellation of an ongoing coordination action - meth ... Test title: DELETE information about a cancellation of an ongoing coordination action - method not implemented ... Test objective: The objective is to test that the DELETE method is not allowed to remove cancellation details of an ongoing coordination action ... Pre-conditions: A cancellation task has been activated - ... Reference: Clause 12.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ Request a cancellation of an ongoing coordination action with permitted authoriz ... Test title: Request a cancellation of an ongoing coordination action with permitted authorization scope ... Test objective: The objective is to test the request for the cancellation of an ongoing coordination task with permitted authorization scope ... Pre-conditions: An ongoing coordination action is available - ... Reference: Clause 12.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ Request a cancellation of an ongoing coordination action with not permitted auth ... Test title: Request a cancellation of an ongoing coordination action with not permitted authorization scope ... Test objective: The objective is to test that the request for the cancellation of an ongoing coordination task fails when using not permitted authorization scope ... Pre-conditions: An ongoing coordination action is available - ... Reference: Clause 12.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLCMCoordination-API/Coordinations.robot b/SOL005/NSLCMCoordination-API/Coordinations.robot index c03bacf4..8221f803 100644 --- a/SOL005/NSLCMCoordination-API/Coordinations.robot +++ b/SOL005/NSLCMCoordination-API/Coordinations.robot @@ -13,7 +13,7 @@ Request a Coordination of an LCM operation occurrence synchronously ... Test title: Request a Coordination of an LCM operation occurrence synchronously ... Test objective: The objective is to test the synchronous request for the coordination of an LCM operation occurrence and perform the JSON schema validation of the returned structure ... Pre-conditions: The status of the related LCM opeation occurrence is "PROCESSING" - ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: A Individual coordination action resource is successfully created on the NFVO @@ -29,7 +29,7 @@ Request a Coordination of an LCM operation occurrence asynchronously ... Test title: Request a Coordination of an LCM operation occurrence asynchronously ... Test objective: The objective is to test the asynchronous request for the coordination of an LCM operation occurrence and perform the validation of the headers returned ... Pre-conditions: The status of the related LCM opeation occurrence is "PROCESSING" - ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ Request a Coordination of an LCM operation occurrence - FORBIDDEN ... Test title: Request a Coordination of an LCM operation occurrence - FORBIDDEN ... Test objective: The objective is to test the failure of a request for the coordination of an LCM operation occurrence ... Pre-conditions: The status of the related LCM opeation occurrence is "PROCESSING". The request is performed by a user that has not the grant to run this operation - ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ Request a Coordination of an LCM operation occurrence - CONFLICT ... Test title: Request a Coordination of an LCM operation occurrence - CONFLICT ... Test objective: The objective is to test the failure of a request for the coordination of an LCM operation occurrence ... Pre-conditions: The status of the related LCM opeation occurrence is not "PROCESSING" - ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ Request a Coordination of an LCM operation occurrence synchronously - Service Un ... Test title: Request a Coordination of an LCM operation occurrence synchronously - Service Unavailable ... Test objective: The objective is to test the request for the coordination of an LCM operation occurrence and the verify that the NFVO cannot perform immediately the request, but can perform it sometime in the future. ... Pre-conditions: The status of the related LCM opeation occurrence is "PROCESSING" but API producer cannot perform immediately the request - ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ Request a Coordination of an LCM operation occurrence without authentication ... Test title: Request a Coordination of an LCM operation occurrence without authentication ... Test objective: The objective is to test the failure of the request for the coordination of an LCM operation occurrence without providing an authentication token ... Pre-conditions: The status of the related LCM opeation occurrence is "PROCESSING" - ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -96,7 +96,7 @@ GET all Coordinations of an LCM operation occurrence - method not implemented ... Test title: GET all Coordinations of an LCM operation occurrence - method not implemented ... Test objective: The objective is to test that the GET method is not allowed to retrieve coordination requests information ... Pre-conditions: The status of the related LCM opeation occurrence is "PROCESSING" - ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ PUT all Coordinations of an LCM operation occurrence - method not implemented ... Test title: PUT all Coordinations of an LCM operation occurrence - method not implemented ... Test objective: The objective is to test that the PUT method is not allowed to modify coordination requests information ... Pre-conditions: The status of the related LCM opeation occurrence is "PROCESSING" - ... Reference: Clause 12.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ PATCH all Coordinations of an LCM operation occurrence - method not implemented ... Test title: PATCH all Coordinations of an LCM operation occurrence - method not implemented ... Test objective: The objective is to test that the PATCH method is not allowed to modify coordination requests information ... Pre-conditions: The status of the related LCM opeation occurrence is "PROCESSING" - ... Reference: Clause 12.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -135,7 +135,7 @@ DELETE all Coordinations of an LCM operation occurrence - method not implemented ... Test title: DELETE all Coordinations of an LCM operation occurrence - method not implemented ... Test objective: The objective is to test that the DELETE method is not allowed to remove coordination requests information ... Pre-conditions: The status of the related LCM opeation occurrence is "PROCESSING" - ... Reference: Clause 12.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -147,7 +147,7 @@ Request a Coordination of an LCM operation occurrence synchronously with permitt ... Test title: Request a Coordination of an LCM operation occurrence synchronously with permitted authorization scope ... Test objective: The objective is to test the synchronous request for the coordination of an LCM operation occurrence with permitted authorization scope ... Pre-conditions: The status of the related LCM opeation occurrence is "PROCESSING" - ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: A Individual coordination action resource is successfully created on the NFVO @@ -162,7 +162,7 @@ Request a Coordination of an LCM operation occurrence synchronously with not per ... Test title: Request a Coordination of an LCM operation occurrence synchronously with not permitted authorization scope ... Test objective: The objective is to test that the synchronous request for the coordination of an LCM operation occurrence fails when using not permitted authorization scope ... Pre-conditions: The status of the related LCM opeation occurrence is "PROCESSING" - ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLCMCoordination-API/IndividualCoordinationAction.robot b/SOL005/NSLCMCoordination-API/IndividualCoordinationAction.robot index 2ee2e9d1..833fc487 100644 --- a/SOL005/NSLCMCoordination-API/IndividualCoordinationAction.robot +++ b/SOL005/NSLCMCoordination-API/IndividualCoordinationAction.robot @@ -13,7 +13,7 @@ POST an individual coordination action of an LCM operation occurrence - method n ... Test title: POST an individual coordination action of an LCM operation occurrence - method not implemented ... Test objective: The objective is to test that the POST method is not allowed to submit a new individuaal coordination requests information ... Pre-conditions: One or more LCM Coordinations have been requested - ... Reference: Clause 12.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ Get information about a finished coordination task ... Test title: Get information about a finished coordination task ... Test objective: The objective is to retrieve information about an individual coordination task and perform a JSON schema validation. ... Pre-conditions: Individual coordination task is terminated - ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ Get information about an ongoing coordination task ... Test title: Get information about an ongoing coordination task ... Test objective: The objective is to retrieve information about an individual coordination task that is still in running or is in the process of being cancelled ... Pre-conditions: Individual coordination task is still ongoing or is in the process of being cancelled - ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ Get information about an invalid coordination task ... Test title: Get information about an invalid coordination task ... Test objective: The objective is to try to read an individual coordination task ... Pre-conditions: Individual coordination task is not present - ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ Get information about a finished coordination task without authentication ... Test title: Get information about a finished coordination task without authentication ... Test objective: The objective is to try to read an individual coordination task without using authentication ... Pre-conditions: none - ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ PUT an individual coordination action of an LCM operation occurrence - method no ... Test title: PUT an individual coordination action of an LCM operation occurrence - method not implemented ... Test objective: The objective is to test that the PUT method is not allowed to modify an individual coordination action ... Pre-conditions: One or more LCM Coordinations have been requested - ... Reference: Clause 12.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ PATCH an individual coordination action of an LCM operation occurrence - method ... Test title: PATCH an individual coordination action of an LCM operation occurrence - method not implemented ... Test objective: The objective is to test that the PATCH method is not allowed to modify an individual coordination action ... Pre-conditions: One or more LCM Coordinations have been requested - ... Reference: Clause 12.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ DELETE an individual coordination action of an LCM operation occurrence - method ... Test title: DELETE an individual coordination action of an LCM operation occurrence - method not implemented ... Test objective: The objective is to test that the DELETE method is not allowed to remove an individual coordination action ... Pre-conditions: One or more LCM Coordinations have been requested - ... Reference: Clause 12.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ Get information about a finished coordination task with permitted authorization ... Test title: Get information about a finished coordination task with permitted authorization scope ... Test objective: The objective is to retrieve information about an individual coordination task with permitted authorization scope ... Pre-conditions: Individual coordination task is terminated - ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none @@ -131,7 +131,7 @@ Get information about a finished coordination task with not permitted authorizat ... Test title: Get information about a finished coordination task with not permitted authorization scope ... Test objective: The objective is to test that retrieve information about an individual coordination task fails when using not permitted authorization scope ... Pre-conditions: Individual coordination task is terminated - ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 12.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_OSS/BSS ... Applicability: none ... Post-Conditions: none -- GitLab From 1b6b2b8aafe77836bb85d26c564714bd03a84dd5 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 18:18:16 +0100 Subject: [PATCH 114/141] updated reference version to 5.1.1 to NFVI Capacity tests --- .../CapacityThresholds.robot | 24 ++++++------- .../IndividualCapacityThreshold.robot | 22 ++++++------ ...ndividualVIMsNFVICapacityInformation.robot | 18 +++++----- .../NFVICapacityInformation.robot | 34 +++++++++---------- .../NotificationEndpoint.robot | 12 +++---- 5 files changed, 55 insertions(+), 55 deletions(-) diff --git a/SOL005/NFVICapacityInformation-API/CapacityThresholds.robot b/SOL005/NFVICapacityInformation-API/CapacityThresholds.robot index ce554660..9181f919 100644 --- a/SOL005/NFVICapacityInformation-API/CapacityThresholds.robot +++ b/SOL005/NFVICapacityInformation-API/CapacityThresholds.robot @@ -7,7 +7,7 @@ POST Create Capacity Threshold ... Test title: POST Create Capacity Threshold ... Test objective: The objective is to test that POST method creates a Capacity Threshold ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -21,7 +21,7 @@ POST Create Capacity Threshold - Unprocessible Content ... Test title: POST Create Capacity Threshold - Unprocessible Content ... Test objective: The objective is to test that POST method creates a Capacity Threshold ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -34,7 +34,7 @@ GET Capacity Thresholds ... Test title: GET Capacity Thresholds ... Test objective: The objective is to GET Capacity Thresholds objects ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -47,7 +47,7 @@ GET Capacity Thresholds - Filter ... Test title: GET Capacity Thresholds - Filter ... Test objective: The objective is to GET Capacity Thresholds objects using filter ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ GET Capacity Thresholds Bad Request Invalid attribute-based filtering parameters ... Test title: GET Capacity Thresholds Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about Capacity Thresholds with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ GET Capacity Thresholds - Bad Request Response too Big ... Test title: GET Capacity Thresholds - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing Capacity Thresholds list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support paged response. ... Post-Conditions: none @@ -86,7 +86,7 @@ GET Capacity Thresholds as Paged Response ... Test title: GET Capacity Thresholds as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing Capacity Thresholds as paged response. ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports paged response. ... Post-Conditions: none @@ -99,7 +99,7 @@ PUT Capacity Thresholds - Method not implemented ... Test title: PUT Capacity Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ PATCH Capacity Thresholds - Method not implemented ... Test title: PATCH Capacity Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ DELETE Capacity Thresholds - Method not implemented ... Test title: DELETE Capacity Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -135,7 +135,7 @@ GET Capacity Thresholds with permitted authorization scope ... Test title: GET Capacity Thresholds with permitted authorization scope ... Test objective: The objective is to GET Capacity Thresholds objects with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ GET Capacity Thresholds with not permitted authorization scope ... Test title: GET Capacity Thresholds with not permitted authorization scope ... Test objective: The objective is to test that GET Capacity Thresholds objects fails when using not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot b/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot index b5436c6d..de0969f7 100644 --- a/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot +++ b/SOL005/NFVICapacityInformation-API/IndividualCapacityThreshold.robot @@ -7,7 +7,7 @@ POST Individual Capacity Threshold ... Test title: POST Individual Capacity Threshold ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 10.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Individual Capacity Thresholds ... Test title: GET Capacity Thresholds ... Test objective: The objective is to test that GET method reads information about Individual Capacity Threshold ... Pre-conditions: none - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Individual Capacity Thresholds - NOT FOUND ... Test title: GET Capacity Thresholds - NOT FOUND ... Test objective: The objective is to test that GET method returns an error when using and invalid URI ... Pre-conditions: none - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ PUT Individual Capacity Threshold - Method not implemented ... Test title: PUT Capacity Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 10.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -57,7 +57,7 @@ PATCH Individual Capacity Threshold - Success ... Test title: PATCH Individual Capacity Threshold - Success ... Test objective: The objective is to test that PATCH method successfully modifies an individual Capacity Threshold resource ... Pre-conditions: none - ... Reference: Clause 10.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Capacity Threshold modified @@ -70,7 +70,7 @@ PATCH Individual Capacity Threshold - Precondition Failed ... Test title: PATCH Individual Capacity Threshold - Precondition Failed ... Test objective: The objective is to that the modification of individual Capacity Threshold fails because precondition given in an HTTP request header is not fulfilled due to an ETag mismatch. ... Pre-conditions: none - ... Reference: Clause 10.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ PATCH Individual Capacity Threshold - Precondition Failed HTTP Conditional Reque ... Test title: PATCH Individual Capacity Threshold - Precondition Failed HTTP Conditional Request Not Supported ... Test objective: The objective is to that the modification of individual Capacity Threshold fails because the API Producer does not support "Last-Modified" and "ETag" HTTP Headers ... Pre-conditions: none - ... Reference: Clause 10.4.5.3.4, 4.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.5.3.4, 4.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: API Producer does not support "Last-Modified" and "ETag" HTTP Headers ... Post-Conditions: none @@ -96,7 +96,7 @@ PATCH Individual Capacity Threshold - Unprocessable Content ... Test title: PATCH Individual Capacity Threshold - Unprocessable Content ... Test objective: The objective is to that the modification of individual Capacity Threshold fails because callbackUri provided in the request body is unreachable. ... Pre-conditions: none - ... Reference: Clause 10.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ DELETE Individual Capacity Threshold ... Test title: DELETE Individual Capacity Threshold ... Test objective: The objective is to delete an Individual Capacity Threshold ... Pre-conditions: none - ... Reference: Clause 10.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Capacity threshold is deleted @@ -122,7 +122,7 @@ GET Individual Capacity Thresholds with permitted authorization scope ... Test title: GET Capacity Thresholds with permitted authorization scope ... Test objective: The objective is to test that GET method reads information about Individual Capacity Threshold with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -135,7 +135,7 @@ GET Individual Capacity Thresholds with not permitted authorization scope ... Test title: GET Capacity Thresholds with not permitted authorization scope ... Test objective: The objective is to test that GET method fails to read information about Individual Capacity Threshold when using not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NFVICapacityInformation-API/IndividualVIMsNFVICapacityInformation.robot b/SOL005/NFVICapacityInformation-API/IndividualVIMsNFVICapacityInformation.robot index b3b2c3c1..0d1f7235 100644 --- a/SOL005/NFVICapacityInformation-API/IndividualVIMsNFVICapacityInformation.robot +++ b/SOL005/NFVICapacityInformation-API/IndividualVIMsNFVICapacityInformation.robot @@ -7,7 +7,7 @@ POST Individual VIMs NFVI Capacity Information - Method not implemented ... Test title: POST Individual VIMs NFVI Capacity Information - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Information about an Individual VIMs NFVI Capacity Information ... Test title: GET Information about an Individual VIMs NFVI Capacity Information ... Test objective: The objective is to retrieve information about Individual VIMs NFVI Capacity Information ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Information about an Individual VIMs NFVI Capacity Information using filter ... Test title: GET Information about an Individual VIMs NFVI Capacity Information using filter query parameter ... Test objective: The objective is to retrieve information about Individual VIMs NFVI Capacity Information using filter query parameter ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ GET Information about an Individual VIMs NFVI Capacity Information - NOT FOUND ... Test title: GET Information about an Individual VIMs NFVI Capacity Information - NOT FOUND ... Test objective: The objective is to test that the retrieval of Individual VIMs NFVI Capacity Information fails when using an invalid resource identifier. ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -58,7 +58,7 @@ PUT Individual VIMs NFVI Capacity Information - Method not implemented ... Test title: PUT Individual VIMs NFVI Capacity Information - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package not modified @@ -70,7 +70,7 @@ PATCH Individual VIMs NFVI Capacity Information - Method Not implemented ... Test title: PATCH Individual VIMs NFVI Capacity Information ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package modified @@ -82,7 +82,7 @@ DELETE Individual VIMs NFVI Capacity Information - Method Not implemented ... Test title: DELETE Individual VIMs NFVI Capacity Information - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package deleted @@ -94,7 +94,7 @@ GET Information about an Individual VIMs NFVI Capacity Information with permitte ... Test title: GET Information about an Individual VIMs NFVI Capacity Information with permitted authorization scope ... Test objective: The objective is to retrieve information about Individual VIMs NFVI Capacity Information with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -107,7 +107,7 @@ GET Information about an Individual VIMs NFVI Capacity Information with not perm ... Test title: GET Information about an Individual VIMs NFVI Capacity Information with not permitted authorization scope ... Test objective: The objective is to test that retrieve information about Individual VIMs NFVI Capacity Information fails when using not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NFVICapacityInformation-API/NFVICapacityInformation.robot b/SOL005/NFVICapacityInformation-API/NFVICapacityInformation.robot index 7b6a58ae..c1d9e6f6 100644 --- a/SOL005/NFVICapacityInformation-API/NFVICapacityInformation.robot +++ b/SOL005/NFVICapacityInformation-API/NFVICapacityInformation.robot @@ -7,7 +7,7 @@ POST NFVI Capacity Information - Method not implemented ... Test title: POST NFVI Capacity Information - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET NFVI Capacity Information ... Test title: GET NFVI Capacity Information ... Test objective: The objective is to GET NFVI Capacity Information objects ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET NFVI Capacity Information - Filter ... Test title: GET NFVI Capacity Information - Filter ... Test objective: The objective is to GET NFVI Capacity Information objects using filter ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ GET NFVI Capacity Information Bad Request Invalid attribute-based filtering para ... Test title: GET NFVI Capacity Information Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about NFVI Capacity Information with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -58,7 +58,7 @@ GET NFVI Capacity Information Bad Request Invalid attribute selector ... Test title: GET NFVI Capacity Information Bad Request Invalid attribute selector ... Test objective: The objective is to get information about NFVI Capacity Information with Invalid attribute selector ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -71,7 +71,7 @@ GET NFVI Capacity Information with "all_fields" attribute selector ... Test title: GET NFVI Capacity Information with "all_fields" attribute selector ... Test objective: The objective is to query NFVI Capacity Information with "all_fields" attribute selector ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET NFVI Capacity Information with "exclude_default" attribute selector ... Test title: GET NFVI Capacity Information with "exclude_default" attribute selector ... Test objective: The objective is to query NFVI Capacity Information with "exclude_default" attribute selector ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ GET NFVI Capacity Information with "fields" attribute selector ... Test title: GET NFVI Capacity Information with "fields" attribute selector ... Test objective: The objective is to query NFVI Capacity Information with "fields" attribute selector ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -110,7 +110,7 @@ GET NFVI Capacity Information with "exclude_default" and "fields" attribute sele ... Test title: GET NFVI Capacity Information with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query NFVI Capacity Information with "exclude_default" and "fields" attribute selector ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ GET NFVI Capacity Information with "exclude_fields" attribute selector ... Test title: GET NFVI Capacity Information with "exclude_fields" attribute selector ... Test objective: The objective is to query NFVI Capacity Information with "exclude_fields" attribute selector ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -136,7 +136,7 @@ GET NFVI Capacity Information - Bad Request Response too Big ... Test title: GET NFVI Capacity Information - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing NFVI Capacity Information list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support paged response. ... Post-Conditions: none @@ -149,7 +149,7 @@ GET NFVI Capacity Information as Paged Response ... Test title: GET NFVI Capacity Information as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing NFVI Capacity Information as paged response. ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports paged response. ... Post-Conditions: none @@ -162,7 +162,7 @@ PUT NFVI Capacity Information - Method not implemented ... Test title: PUT NFVI Capacity Information - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ PATCH NFVI Capacity Information - Method not implemented ... Test title: PATCH NFVI Capacity Information - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -186,7 +186,7 @@ DELETE NFVI Capacity Information - Method not implemented ... Test title: DELETE NFVI Capacity Information - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -198,7 +198,7 @@ GET NFVI Capacity Information with permitted authorization scope ... Test title: GET NFVI Capacity Information with permitted authorization scope ... Test objective: The objective is to GET NFVI Capacity Information objects with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -211,7 +211,7 @@ GET NFVI Capacity Information with not permitted authorization scope ... Test title: GET NFVI Capacity Information with not permitted authorization scope ... Test objective: The objective is to test that GET NFVI Capacity Information objects fails when using not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NFVICapacityInformation-API/NotificationEndpoint.robot b/SOL005/NFVICapacityInformation-API/NotificationEndpoint.robot index a060f956..4adb2c34 100644 --- a/SOL005/NFVICapacityInformation-API/NotificationEndpoint.robot +++ b/SOL005/NFVICapacityInformation-API/NotificationEndpoint.robot @@ -8,7 +8,7 @@ Capacity Shortage Notification ... Test title: Capacity Shortage Notification ... Test objective: The objective is to test that Capacity Shortage Notification is delivered with success to the notification consumer. ... Pre-conditions: The consumer has already created an Individual Capacity Threshold resource - ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -20,7 +20,7 @@ Test the Notification Endpoint - Successful ... Test title: Test the Notification Endpoint - Successful ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. ... Pre-conditions: The consumer has already created an Individual Capacity Threshold resource - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ Test the Notification Endpoint - UNREACHABLE ... Test title: Test the Notification Endpoint - UNREACHABLE ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. ... Pre-conditions: The consumer has already created an Individual Capacity Threshold resource - ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: The notification endpoint is unreachable by the API producer. ... Post-Conditions: none @@ -45,7 +45,7 @@ PUT Notification endpoint - Method Not Implemented ... Test title: PUT Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. - ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -57,7 +57,7 @@ PATCH Notification endpoint - Method Not Implemented ... Test title: PATCH Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. - ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ DELETE Notification endpoint - Method Not Implemented ... Test title: DELETE Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. - ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 10.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none -- GitLab From e1f9a092f6008d69b268e08ad99f45b1a7515b48 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Tue, 7 Jan 2025 11:59:09 +0100 Subject: [PATCH 115/141] added new tests 5.3.6.7.x for CCM capacity info, as per NFVSOL(24)000077 --- ...ndividualCCMsNFVICapacityInformation.robot | 115 +++++++ .../NFVICapacityInformationKeywords.robot | 86 +++++ .../environment/variables.txt | 3 + .../schemas/NfviCapacityInfo.schema.json | 291 +++++++++-------- .../schemas/NfviCapacityInfos.schema.json | 300 +++++++++--------- 5 files changed, 508 insertions(+), 287 deletions(-) create mode 100644 SOL005/NFVICapacityInformation-API/IndividualCCMsNFVICapacityInformation.robot diff --git a/SOL005/NFVICapacityInformation-API/IndividualCCMsNFVICapacityInformation.robot b/SOL005/NFVICapacityInformation-API/IndividualCCMsNFVICapacityInformation.robot new file mode 100644 index 00000000..cbbac59e --- /dev/null +++ b/SOL005/NFVICapacityInformation-API/IndividualCCMsNFVICapacityInformation.robot @@ -0,0 +1,115 @@ +*** Settings *** +Resource NFVICapacityInformationKeywords.robot + +*** Test Cases *** +POST Individual CCMs NFVI Capacity Information - Method not implemented + [Documentation] Test ID: 5.3.6.7.1 + ... Test title: POST Individual CCMs NFVI Capacity Information - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.3a.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + POST Individual CCMs NFVI Capacity Information + Check HTTP Response Status Code Is 405 + +GET Information about an Individual CCMs NFVI Capacity Information + [Documentation] Test ID: 5.3.6.7.2 + ... Test title: GET Information about an Individual CCMs NFVI Capacity Information + ... Test objective: The objective is to retrieve information about Individual CCMs NFVI Capacity Information + ... Pre-conditions: none + ... Reference: Clause 10.4.3a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual CCMs NFVI Capacity Information + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NfviCapacityInfo + +GET Information about an Individual CCMs NFVI Capacity Information using filter query parameter + [Documentation] Test ID: 5.3.6.7.3 + ... Test title: GET Information about an Individual CCMs NFVI Capacity Information using filter query parameter + ... Test objective: The objective is to retrieve information about Individual CCMs NFVI Capacity Information using filter query parameter + ... Pre-conditions: none + ... Reference: Clause 10.4.3a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual CCMs NFVI Capacity Information using filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NfviCapacityInfo + +GET Information about an Individual CCMs NFVI Capacity Information - NOT FOUND + [Documentation] Test ID: 5.3.6.7.4 + ... Test title: GET Information about an Individual CCMs NFVI Capacity Information - NOT FOUND + ... Test objective: The objective is to test that the retrieval of Individual CCMs NFVI Capacity Information fails when using an invalid resource identifier. + ... Pre-conditions: none + ... Reference: Clause 10.4.3a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + GET Individual CCMs NFVI Capacity Information with Invalid VIM ID + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +PUT Individual CCMs NFVI Capacity Information - Method not implemented + [Documentation] Test ID: 5.3.6.7.5 + ... Test title: PUT Individual CCMs NFVI Capacity Information - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.3a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: VNF Snapshot Package not modified + PUT Individual CCMs NFVI Capacity Information + Check HTTP Response Status Code Is 405 + +PATCH Individual CCMs NFVI Capacity Information - Method Not implemented + [Documentation] Test ID: 5.3.6.7.6 + ... Test title: PATCH Individual CCMs NFVI Capacity Information + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.3a.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: VNF Snapshot Package modified + PATCH Individual CCMs NFVI Capacity Information + Check HTTP Response Status Code Is 405 + +DELETE Individual CCMs NFVI Capacity Information - Method Not implemented + [Documentation] Test ID: 5.3.6.7.7 + ... Test title: DELETE Individual CCMs NFVI Capacity Information - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 10.4.3a.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: VNF Snapshot Package deleted + DELETE Individual CCMs NFVI Capacity Information + Check HTTP Response Status Code Is 405 + +GET Information about an Individual CCMs NFVI Capacity Information with permitted authorization scope + [Documentation] Test ID: 5.3.6.7.8 + ... Test title: GET Information about an Individual CCMs NFVI Capacity Information with permitted authorization scope + ... Test objective: The objective is to retrieve information about Individual CCms NFVI Capacity Information with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 10.4.3a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual CCMs NFVI Capacity Information with permitted authorization scope + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NfviCapacityInfo + +GET Information about an Individual CCMs NFVI Capacity Information with not permitted authorization scope + [Documentation] Test ID: 5.3.6.7.9 + ... Test title: GET Information about an Individual CCMs NFVI Capacity Information with not permitted authorization scope + ... Test objective: The objective is to test that retrieve information about Individual CCMs NFVI Capacity Information fails when using not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 10.4.3a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Config ID: Config_prod_NFVO + ... Applicability: none + ... Post-Conditions: none + GET Individual CCMs NFVI Capacity Information with not permitted authorization scope + Check HTTP Response Status Code Is 401 \ No newline at end of file diff --git a/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot b/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot index 893df1c7..820a6519 100644 --- a/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot +++ b/SOL005/NFVICapacityInformation-API/NFVICapacityInformationKeywords.robot @@ -322,6 +322,92 @@ DELETE Individual VIMs NFVI Capacity Information ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST Individual CCMs NFVI Capacity Information + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/ccm/${ccmId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual CCMs NFVI Capacity Information + log Trying to get information about an Individual CCMs NFVI Capacity Information + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/ccm/${ccmId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual CCMs NFVI Capacity Information with permitted authorization scope + log Trying to get information about an Individual VIMs NFVI Capacity Information + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + ${scopeValue}= Create Dictionary scope=${INFOS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key='' algorithm=${OAUTH_ENCRIPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Authorization Token: ${authorizationToken} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/ccm/${ccmId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual CCMs NFVI Capacity Information with not permitted authorization scope + log Trying to get information about an Individual CCMs NFVI Capacity Information + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + ${scopeValue}= Create Dictionary scope=${NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key='' algorithm=${OAUTH_ENCRIPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Authorization Token: ${authorizationToken} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/ccm/${ccmId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual CCMs NFVI Capacity Information using filter + log Trying to get information about an Individual CCMs NFVI Capacity Information + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/ccm/${ccmId}?${POS_FILTER_info} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET Individual CCMs NFVI Capacity Information with Invalid VIM ID + log Trying to get information about an Individual CCMs NFVI Capacity Information + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/ccm/${invalidCcmId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Individual CCMs NFVI Capacity Information + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/ccm/${ccmId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Individual CCMs NFVI Capacity Information + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/ccm/${ccmId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Individual CCMs NFVI Capacity Information + log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/nfvi_capacity_infos/ccm/${ccmId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + POST Create a Capacity Threshold Log Trying to POST create a new capacity threshold. Set Headers {"Accept":"${ACCEPT_JSON}"} diff --git a/SOL005/NFVICapacityInformation-API/environment/variables.txt b/SOL005/NFVICapacityInformation-API/environment/variables.txt index d402693c..91b10e8d 100644 --- a/SOL005/NFVICapacityInformation-API/environment/variables.txt +++ b/SOL005/NFVICapacityInformation-API/environment/variables.txt @@ -43,4 +43,7 @@ ${invalidVimId} ${capacityThreshold} ${invalid_capacityThreshold} +${ccmId} +${invalidCcmId} + ${PRODUCER_SUPPORT_COND_REQ} 1 diff --git a/SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfo.schema.json b/SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfo.schema.json index 79d4b1eb..d495c336 100644 --- a/SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfo.schema.json +++ b/SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfo.schema.json @@ -1,143 +1,152 @@ { - "type": "object", - "description": "This type defines the format of the NFVI capacity information. The type shall comply with the provisions defined\nin Table 10.5.2.4-1.\n", - "required": [ - "id", - "vimId", - "capacityInfoPerZone" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "capacityInfoPerZone": { - "description": "Capacity information on a per resource zone basis under control by the associated VIM.\n", - "type": "array", - "items": { - "type": "object", - "description": "This type defines the format of the NFVI capacity information on a per resource zone basis.\nThe type shall comply with the provisions defined in table 10.5.2.5-1.\n", - "required": [ - "capacityMeasurements" - ], - "properties": { - "resourceZoneId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "capacityMeasurements": { - "description": "Capacity measurement on a per resource type basis.\n", - "type": "array", - "items": { - "type": "object", - "description": "This type defines the format of the NFVI capacity information on a per resource type basis.\nThe type shall comply with the provisions defined in table 10.5.2.6-1.\n", - "required": [ - "resourceType", - "capacityMeasurementName", - "totalCapacity", - "allocatedCapacity", - "availableCapacity" - ], - "properties": { - "resourceType": { - "type": "string", - "description": "The enumeration NfviCapacityResourceTypeEnumeration shall comply with the provisions in table 10.5.4.3-1.\n* VR_COMPUTE: For virtualised compute resource.\n* VR_NETWORK: For virtualised network resource.\n* VR_STORAGE: For virtualised storage resource.\n* HOST_COMPUTE: For host compute resource.\n", - "enum": [ - "VR_COMPUTE", - "VR_NETWORK", - "VR_STORAGE", - "HOST_COMPUTE" - ] - }, - "capacityMeasurementName": { - "description": "Name of the capacity measurement. Different resource types can have different associated capacity measurements,\ntypically associated to different sub-types of the resource type.\nThe present document and referred documents do not specify the capacity measurements, thus the capacity\nmeasurement names are not specified in the present document version.\n", - "type": "string" - }, - "totalCapacity": { - "description": "The total capacity.\n", - "type": "object" - }, - "allocatedCapacity": { - "description": "The allocated/used capacity.\n", - "type": "object" - }, - "reservedCapacity": { - "description": "The reserved capacity. Shall be present if the capacity measurement relates to a resource type and\n(and sub-type) that is reservable.\n", - "type": "object" - }, - "availableCapacity": { - "description": "The available capacity.\n", - "type": "object" - } - } - } - } - } - } - }, - "totalCapacityInfo": { - "type": "object", - "description": "This type defines the format of the NFVI capacity information on a per resource type basis.\nThe type shall comply with the provisions defined in table 10.5.2.6-1.\n", - "required": [ - "resourceType", - "capacityMeasurementName", - "totalCapacity", - "allocatedCapacity", - "availableCapacity" - ], - "properties": { - "resourceType": { - "type": "string", - "description": "The enumeration NfviCapacityResourceTypeEnumeration shall comply with the provisions in table 10.5.4.3-1.\n* VR_COMPUTE: For virtualised compute resource.\n* VR_NETWORK: For virtualised network resource.\n* VR_STORAGE: For virtualised storage resource.\n* HOST_COMPUTE: For host compute resource.\n", - "enum": [ - "VR_COMPUTE", - "VR_NETWORK", - "VR_STORAGE", - "HOST_COMPUTE" - ] - }, - "capacityMeasurementName": { - "description": "Name of the capacity measurement. Different resource types can have different associated capacity measurements,\ntypically associated to different sub-types of the resource type.\nThe present document and referred documents do not specify the capacity measurements, thus the capacity\nmeasurement names are not specified in the present document version.\n", - "type": "string" - }, - "totalCapacity": { - "description": "The total capacity.\n", - "type": "object" - }, - "allocatedCapacity": { - "description": "The allocated/used capacity.\n", - "type": "object" - }, - "reservedCapacity": { - "description": "The reserved capacity. Shall be present if the capacity measurement relates to a resource type and\n(and sub-type) that is reservable.\n", - "type": "object" - }, - "availableCapacity": { - "description": "The available capacity.\n", - "type": "object" - } - } - }, - "timeInterval": { - "type": "object", - "description": "This type defines the format of a time interval. The type shall comply with the provisions defined in table 10.5.2.7-1.\n", - "required": [ - "aTime" - ], - "properties": { - "aTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "bTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - } - } - } - } + "type": "object", + "description": "This type defines the format of the NFVI capacity information. The type shall comply with the provisions defined\nin Table 10.5.2.4-1.\n", + "required": [ + "id", + "capacityInfoPerZone" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "ccmId": { + "description": "Identifies the CCM to which the NFVI capacity information is associated. \n", + "type": "string" + }, + "capacityInfoPerZone": { + "description": "Capacity information on a per resource zone basis under control by the associated VIM.\n", + "type": "array", + "items": { + "type": "object", + "description": "This type defines the format of the NFVI capacity information on a per resource zone basis.\nThe type shall comply with the provisions defined in table 10.5.2.5-1.\n", + "required": [ + "capacityMeasurements" + ], + "properties": { + "resourceZoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cisClusterId": { + "description": "Identifies the CIS cluster of the applicable NFVI capacity information.\n", + "type": "string" + }, + "capacityMeasurements": { + "description": "Capacity measurement on a per resource type basis.\n", + "type": "array", + "items": { + "type": "object", + "description": "This type defines the format of the NFVI capacity information on a per resource type basis.\nThe type shall comply with the provisions defined in table 10.5.2.6-1.\nNOTE: The present document and referred documents do not specify the capacity measurements,\nthus the capacity measurement names are not specified in the present document version.\n", + "required": [ + "resourceType", + "capacityMeasurementName", + "totalCapacity", + "allocatedCapacity", + "availableCapacity" + ], + "properties": { + "resourceType": { + "type": "string", + "description": "The enumeration NfviCapacityResourceTypeEnumeration shall comply with the provisions in table 10.5.4.3-1.\n* VR_COMPUTE: For virtualised compute resource.\n* VR_NETWORK: For virtualised network resource.\n* VR_STORAGE: For virtualised storage resource.\n* HOST_COMPUTE: For host compute resource.\n", + "enum": [ + "VR_COMPUTE", + "VR_NETWORK", + "VR_STORAGE", + "HOST_COMPUTE" + ] + }, + "capacityMeasurementName": { + "description": "Name of the capacity measurement. Different resource types can have different associated capacity measurements,\ntypically associated to different sub-types of the resource type.\nSee note.\n", + "type": "string" + }, + "totalCapacity": { + "description": "The total capacity.\n", + "type": "object" + }, + "allocatedCapacity": { + "description": "The allocated/used capacity.\n", + "type": "object" + }, + "reservedCapacity": { + "description": "The reserved capacity. Shall be present if the capacity measurement relates to a resource type and\n(and sub-type) that is reservable.\n", + "type": "object" + }, + "availableCapacity": { + "description": "The available capacity.\n", + "type": "object" + } + } + } + } + } + } + }, + "totalCapacityInfo": { + "type": "object", + "description": "This type defines the format of the NFVI capacity information on a per resource type basis.\nThe type shall comply with the provisions defined in table 10.5.2.6-1.\nNOTE: The present document and referred documents do not specify the capacity measurements,\nthus the capacity measurement names are not specified in the present document version.\n", + "required": [ + "resourceType", + "capacityMeasurementName", + "totalCapacity", + "allocatedCapacity", + "availableCapacity" + ], + "properties": { + "resourceType": { + "type": "string", + "description": "The enumeration NfviCapacityResourceTypeEnumeration shall comply with the provisions in table 10.5.4.3-1.\n* VR_COMPUTE: For virtualised compute resource.\n* VR_NETWORK: For virtualised network resource.\n* VR_STORAGE: For virtualised storage resource.\n* HOST_COMPUTE: For host compute resource.\n", + "enum": [ + "VR_COMPUTE", + "VR_NETWORK", + "VR_STORAGE", + "HOST_COMPUTE" + ] + }, + "capacityMeasurementName": { + "description": "Name of the capacity measurement. Different resource types can have different associated capacity measurements,\ntypically associated to different sub-types of the resource type.\nSee note.\n", + "type": "string" + }, + "totalCapacity": { + "description": "The total capacity.\n", + "type": "object" + }, + "allocatedCapacity": { + "description": "The allocated/used capacity.\n", + "type": "object" + }, + "reservedCapacity": { + "description": "The reserved capacity. Shall be present if the capacity measurement relates to a resource type and\n(and sub-type) that is reservable.\n", + "type": "object" + }, + "availableCapacity": { + "description": "The available capacity.\n", + "type": "object" + } + } + }, + "timeInterval": { + "type": "object", + "description": "This type defines the format of a time interval. The type shall comply with the provisions defined in table 10.5.2.7-1.\nNOTE: When only the aTime is present, there is no time interval being defined, and therefore the provided timing\ninformation refers to a specific point in time.\n", + "required": [ + "aTime" + ], + "properties": { + "aTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "bTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + } + } + } + } } \ No newline at end of file diff --git a/SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfos.schema.json b/SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfos.schema.json index f8329b95..1c44b222 100644 --- a/SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfos.schema.json +++ b/SOL005/NFVICapacityInformation-API/schemas/NfviCapacityInfos.schema.json @@ -1,147 +1,155 @@ { - "type": "array", - "items": - { - "type": "object", - "description": "This type defines the format of the NFVI capacity information. The type shall comply with the provisions defined\nin Table 10.5.2.4-1.\n", - "required": [ - "id", - "vimId", - "capacityInfoPerZone" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "capacityInfoPerZone": { - "description": "Capacity information on a per resource zone basis under control by the associated VIM.\n", - "type": "array", - "items": { - "type": "object", - "description": "This type defines the format of the NFVI capacity information on a per resource zone basis.\nThe type shall comply with the provisions defined in table 10.5.2.5-1.\n", - "required": [ - "capacityMeasurements" - ], - "properties": { - "resourceZoneId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "capacityMeasurements": { - "description": "Capacity measurement on a per resource type basis.\n", - "type": "array", - "items": { - "type": "object", - "description": "This type defines the format of the NFVI capacity information on a per resource type basis.\nThe type shall comply with the provisions defined in table 10.5.2.6-1.\n", - "required": [ - "resourceType", - "capacityMeasurementName", - "totalCapacity", - "allocatedCapacity", - "availableCapacity" - ], - "properties": { - "resourceType": { - "type": "string", - "description": "The enumeration NfviCapacityResourceTypeEnumeration shall comply with the provisions in table 10.5.4.3-1.\n* VR_COMPUTE: For virtualised compute resource.\n* VR_NETWORK: For virtualised network resource.\n* VR_STORAGE: For virtualised storage resource.\n* HOST_COMPUTE: For host compute resource.\n", - "enum": [ - "VR_COMPUTE", - "VR_NETWORK", - "VR_STORAGE", - "HOST_COMPUTE" - ] - }, - "capacityMeasurementName": { - "description": "Name of the capacity measurement. Different resource types can have different associated capacity measurements,\ntypically associated to different sub-types of the resource type.\nThe present document and referred documents do not specify the capacity measurements, thus the capacity\nmeasurement names are not specified in the present document version.\n", - "type": "string" - }, - "totalCapacity": { - "description": "The total capacity.\n", - "type": "object" - }, - "allocatedCapacity": { - "description": "The allocated/used capacity.\n", - "type": "object" - }, - "reservedCapacity": { - "description": "The reserved capacity. Shall be present if the capacity measurement relates to a resource type and\n(and sub-type) that is reservable.\n", - "type": "object" - }, - "availableCapacity": { - "description": "The available capacity.\n", - "type": "object" - } - } - } - } - } - } - }, - "totalCapacityInfo": { - "type": "object", - "description": "This type defines the format of the NFVI capacity information on a per resource type basis.\nThe type shall comply with the provisions defined in table 10.5.2.6-1.\n", - "required": [ - "resourceType", - "capacityMeasurementName", - "totalCapacity", - "allocatedCapacity", - "availableCapacity" - ], - "properties": { - "resourceType": { - "type": "string", - "description": "The enumeration NfviCapacityResourceTypeEnumeration shall comply with the provisions in table 10.5.4.3-1.\n* VR_COMPUTE: For virtualised compute resource.\n* VR_NETWORK: For virtualised network resource.\n* VR_STORAGE: For virtualised storage resource.\n* HOST_COMPUTE: For host compute resource.\n", - "enum": [ - "VR_COMPUTE", - "VR_NETWORK", - "VR_STORAGE", - "HOST_COMPUTE" - ] - }, - "capacityMeasurementName": { - "description": "Name of the capacity measurement. Different resource types can have different associated capacity measurements,\ntypically associated to different sub-types of the resource type.\nThe present document and referred documents do not specify the capacity measurements, thus the capacity\nmeasurement names are not specified in the present document version.\n", - "type": "string" - }, - "totalCapacity": { - "description": "The total capacity.\n", - "type": "object" - }, - "allocatedCapacity": { - "description": "The allocated/used capacity.\n", - "type": "object" - }, - "reservedCapacity": { - "description": "The reserved capacity. Shall be present if the capacity measurement relates to a resource type and\n(and sub-type) that is reservable.\n", - "type": "object" - }, - "availableCapacity": { - "description": "The available capacity.\n", - "type": "object" - } - } - }, - "timeInterval": { - "type": "object", - "description": "This type defines the format of a time interval. The type shall comply with the provisions defined in table 10.5.2.7-1.\n", - "required": [ - "aTime" - ], - "properties": { - "aTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "bTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - } - } - } - } - } -} \ No newline at end of file + "type": "array", + "items": { + "type": "object", + "description": "This type defines the format of the NFVI capacity information. The type shall comply with the provisions defined\nin Table 10.5.2.4-1.\n", + "required": [ + "id", + "capacityInfoPerZone" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "ccmId": { + "description": "Identifies the CCM to which the NFVI capacity information is associated. \n", + "type": "string" + }, + "capacityInfoPerZone": { + "description": "Capacity information on a per resource zone basis under control by the associated VIM.\n", + "type": "array", + "items": { + "type": "object", + "description": "This type defines the format of the NFVI capacity information on a per resource zone basis.\nThe type shall comply with the provisions defined in table 10.5.2.5-1.\n", + "required": [ + "capacityMeasurements" + ], + "properties": { + "resourceZoneId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cisClusterId": { + "description": "Identifies the CIS cluster of the applicable NFVI capacity information.\n", + "type": "string" + }, + "capacityMeasurements": { + "description": "Capacity measurement on a per resource type basis.\n", + "type": "array", + "items": { + "type": "object", + "description": "This type defines the format of the NFVI capacity information on a per resource type basis.\nThe type shall comply with the provisions defined in table 10.5.2.6-1.\nNOTE: The present document and referred documents do not specify the capacity measurements,\nthus the capacity measurement names are not specified in the present document version.\n", + "required": [ + "resourceType", + "capacityMeasurementName", + "totalCapacity", + "allocatedCapacity", + "availableCapacity" + ], + "properties": { + "resourceType": { + "type": "string", + "description": "The enumeration NfviCapacityResourceTypeEnumeration shall comply with the provisions in table 10.5.4.3-1.\n* VR_COMPUTE: For virtualised compute resource.\n* VR_NETWORK: For virtualised network resource.\n* VR_STORAGE: For virtualised storage resource.\n* HOST_COMPUTE: For host compute resource.\n", + "enum": [ + "VR_COMPUTE", + "VR_NETWORK", + "VR_STORAGE", + "HOST_COMPUTE" + ] + }, + "capacityMeasurementName": { + "description": "Name of the capacity measurement. Different resource types can have different associated capacity measurements,\ntypically associated to different sub-types of the resource type.\nSee note.\n", + "type": "string" + }, + "totalCapacity": { + "description": "The total capacity.\n", + "type": "object" + }, + "allocatedCapacity": { + "description": "The allocated/used capacity.\n", + "type": "object" + }, + "reservedCapacity": { + "description": "The reserved capacity. Shall be present if the capacity measurement relates to a resource type and\n(and sub-type) that is reservable.\n", + "type": "object" + }, + "availableCapacity": { + "description": "The available capacity.\n", + "type": "object" + } + } + } + } + } + } + }, + "totalCapacityInfo": { + "type": "object", + "description": "This type defines the format of the NFVI capacity information on a per resource type basis.\nThe type shall comply with the provisions defined in table 10.5.2.6-1.\nNOTE: The present document and referred documents do not specify the capacity measurements,\nthus the capacity measurement names are not specified in the present document version.\n", + "required": [ + "resourceType", + "capacityMeasurementName", + "totalCapacity", + "allocatedCapacity", + "availableCapacity" + ], + "properties": { + "resourceType": { + "type": "string", + "description": "The enumeration NfviCapacityResourceTypeEnumeration shall comply with the provisions in table 10.5.4.3-1.\n* VR_COMPUTE: For virtualised compute resource.\n* VR_NETWORK: For virtualised network resource.\n* VR_STORAGE: For virtualised storage resource.\n* HOST_COMPUTE: For host compute resource.\n", + "enum": [ + "VR_COMPUTE", + "VR_NETWORK", + "VR_STORAGE", + "HOST_COMPUTE" + ] + }, + "capacityMeasurementName": { + "description": "Name of the capacity measurement. Different resource types can have different associated capacity measurements,\ntypically associated to different sub-types of the resource type.\nSee note.\n", + "type": "string" + }, + "totalCapacity": { + "description": "The total capacity.\n", + "type": "object" + }, + "allocatedCapacity": { + "description": "The allocated/used capacity.\n", + "type": "object" + }, + "reservedCapacity": { + "description": "The reserved capacity. Shall be present if the capacity measurement relates to a resource type and\n(and sub-type) that is reservable.\n", + "type": "object" + }, + "availableCapacity": { + "description": "The available capacity.\n", + "type": "object" + } + } + }, + "timeInterval": { + "type": "object", + "description": "This type defines the format of a time interval. The type shall comply with the provisions defined in table 10.5.2.7-1.\nNOTE: When only the aTime is present, there is no time interval being defined, and therefore the provided timing\ninformation refers to a specific point in time.\n", + "required": [ + "aTime" + ], + "properties": { + "aTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "bTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + } + } + } + } + } +} \ No newline at end of file -- GitLab From eb85be505bead5acc80956b93dc0b2c36eab40ff Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 18:23:49 +0100 Subject: [PATCH 116/141] updated reference version to 5.1.1 to NSD management tests --- .../IndividualNSDArchiveArtifact.robot | 30 ++++++++--------- .../IndividualNSDescriptor.robot | 28 ++++++++-------- .../IndividualPNFDArchiveArtifact.robot | 30 ++++++++--------- .../IndividualPnfDescriptor.robot | 20 ++++++------ .../IndividualSubscription.robot | 18 +++++------ SOL005/NSDManagement-API/NSD.robot | 28 ++++++++-------- .../NSDManagement-API/NSDArchiveContent.robot | 28 ++++++++-------- .../NSDArchiveManifest.robot | 18 +++++------ .../NotificationEndpoint.robot | 14 ++++---- SOL005/NSDManagement-API/Notifications.robot | 14 ++++---- SOL005/NSDManagement-API/PNFD.robot | 28 ++++++++-------- .../PNFDArchiveContent.robot | 26 +++++++-------- .../PNFDArchiveManifest.robot | 18 +++++------ SOL005/NSDManagement-API/PNFDescriptors.robot | 32 +++++++++---------- SOL005/NSDManagement-API/Subscriptions.robot | 30 ++++++++--------- .../descriptors/SOL001/NSD/nsd_SOL001.yaml | 4 +-- 16 files changed, 183 insertions(+), 183 deletions(-) diff --git a/SOL005/NSDManagement-API/IndividualNSDArchiveArtifact.robot b/SOL005/NSDManagement-API/IndividualNSDArchiveArtifact.robot index 793b9e14..be54813b 100644 --- a/SOL005/NSDManagement-API/IndividualNSDArchiveArtifact.robot +++ b/SOL005/NSDManagement-API/IndividualNSDArchiveArtifact.robot @@ -12,7 +12,7 @@ GET Individual NSD Archive Artifact ... Test title: GET Individual NSD Archive Artifact ... Test objective: The objective is to test the retrieval of an individual NSD Archive artifact ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. - ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET Individual NSD Archive Artifact with include_signatures parameter ... Test title: GET Individual NSD Archive Artifact with include_signatures parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. - ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ GET Individual NSD Archive Artifact in octet stream format ... Test title: GET Individual NSD Archive Artifact in octet stream format ... Test objective: The objective is to test the retrieval of an individual NSD Archive artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format. ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. - ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -50,7 +50,7 @@ GET Individual NSD Archive Artifact with Range Request and NFVO supporting Range ... Test title: GET Individual NSD Archive Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual NSD Archive artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. - ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the NSD Archive artifact ... Post-Conditions: none @@ -64,7 +64,7 @@ GET Individual NSD Archive Artifact with Range Request and NFVO not supporting R ... Test title: GET Individual NSD Archive Artifact with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual NSD archive artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full NSD Archive artifact. ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. - ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the NSD Archive artifact ... Post-Conditions: none @@ -76,7 +76,7 @@ GET Individual NSD Archive Artifact with invalid resource identifier ... Test title: GET Individual NSD Archive Artifact with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual NSD Archive Artifact fails when using an invalid resource identifier ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. - ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ GET Individual NSD Archive Artifact - Not Acceptable ... Test title: GET Individual NSD Archive Artifact - Not Acceptable ... Test objective: The objective is to test that the retrieval of an individual NSD Archive artifact fails when related request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. - ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ GET Individual NSD Archive Artifact with conflict due to onboarding state ... GET Individual NSD Archive Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual NSD Archive Artifact fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the NSD archive for which the content is requested is different from ONBOARDED. - ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ GET Individual NSD Archive Artifact with invalid Range Request ... Test title: GET Individual NSD Archive Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an Individual NSD Archive fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more NSD Archives are on-boarded to the NFVO. - ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the NSD Archive artifact ... Post-Conditions: none @@ -127,7 +127,7 @@ POST Individual NSD Archive Artifact - Method not implemented ... Test title: POST Individual NSD Archive Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create an individual artifact contained in an NSD archive. ... Pre-conditions: none - ... Reference: Clause 5.4.4c.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -139,7 +139,7 @@ PUT Individual NSD Archive Artifact - Method not implemented ... Test title: PUT Individual NSD Archive Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an Individual NSD Archive artifact ... Pre-conditions: none - ... Reference: Clause 5.4.4c.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ PATCH Individual NSD Archive Artifact - Method not implemented ... Test title: PATCH Individual NSD Archive Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an Individual NSD Archive artifact ... Pre-conditions: none - ... Reference: Clause 5.4.4c.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -163,7 +163,7 @@ DELETE Individual NSD Archive Artifact - Method not implemented ... Test title: DELETE Individual NSD Archive Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an Individual NSD Archive artifact ... Pre-conditions: none - ... Reference: Clause 5.4.4c.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -175,7 +175,7 @@ GET Individual NSD Archive Artifact with permitted authorization scope ... Test title: GET Individual NSD Archive Artifact with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual NSD Archive artifact with permitted authorization scope ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. - ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -187,7 +187,7 @@ GET Individual NSD Archive Artifact with not permitted authorization scope ... Test title: GET Individual NSD Archive Artifact with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of an individual NSD Archive artifact fails when using not permitted authorization scope ... Pre-conditions: One or more NSD archives are on-boarded to the NFVO. - ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot index 4d889561..e0917ef4 100644 --- a/SOL005/NSDManagement-API/IndividualNSDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualNSDescriptor.robot @@ -14,7 +14,7 @@ GET Individual Network Service Descriptor Information ... Test title: GET Individual Network Service Descriptor Information ... Test objective: The objective is to test the retrieval of an individual Network Service Descriptor information and perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ GET Individual Network Service Descriptor Information with invalid resource iden ... Test title: GET Individual Network Service Descriptor Information with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual Network Service Descriptor Information fails when using an invalid resource identifier ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ Disable Individual Network Service Descriptor ... Test title: Disable Individual Network Service Descriptor ... Test objective: The objective is to test the disabling of an individual Network Service Descriptor and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in enabled operational state. - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor is in operational state DISABLED and usage state is not modified @@ -59,7 +59,7 @@ Enable Individual Network Service Descriptor ... Test title: Enable Individual Network Service Descriptor ... Test objective: The objective is to test the enabling of an individual Network Service Descriptor and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in DISABLED operational state (Test ID 5.3.1.2.3). - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor is in operational state ENABLED and usage state is not modified @@ -74,7 +74,7 @@ Enable Individual Network Service Descriptor with conflict due to operational st ... Test title: Enable Individual Network Service Descriptor with conflict due to operational state ENABLED ... Test objective: The objective is to test that enabling an individual Network Service Descriptor that is already in ENABLED operational state failsand perform a JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.4). - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ Enable Individual Network Service Descriptor with conflict due to onboarding sta ... Test title: Enable Individual Network Service Descriptor with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an Network Service Descriptor fails due to a conflict when the Network Service Descriptor is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in ENABLED operational state. The onboarding state of the Network Service Descriptor for which the enabling is requested is different from ONBOARDED. - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ Enable Individual Network Service Descriptor with HTTP Etag precondition failure ... Test title: Enable Individual Network Service Descriptor with HTTP Etag precondition failure ... Test objective: The objective is to test that the retrieval of an Network Service Descriptor fails due to a precondition failure when using an uncorrect Http Etag identified. ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.4). - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ Enable Individual Network Service Descriptor with HTTP Conditional Request Not S ... Test title: Enable Individual Network Service Descriptor with HTTP Conditional Request Not Supported Precondition Failure ... Test objective: The objective is to test that the retrieval of an Network Service Descriptor fails if the API Producer does not support "Last-Modified" and "ETag" HTTP Headers ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.4). - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: API Producer does not support "Last-Modified" and "ETag" HTTP Headers ... Post-Conditions: none @@ -135,7 +135,7 @@ DELETE Individual Network Service Descriptor ... Test title: DELETE Individual Network Service Descriptor ... Test objective: The objective is to test the deletion of an individual Network Service Descriptor. ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in DISABLED operational state and NOT_IN_USE usage state. - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor is not available anymore in the NFVO @@ -148,7 +148,7 @@ DELETE Individual Network Service Descriptor in operational state ENABLED ... Test title: DELETE Individual Network Service Descriptor in operational state ENABLED ... Test objective: The objective is to test that the deletion of an individual Network Service Descriptor in operational state ENABLED fails. The test also performs a JSON schema validation of the failed operation HTTP response. ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in ENABLED operational state (Test ID 5.3.1.2.4). - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor is not deleted by the failed operation. @@ -162,7 +162,7 @@ POST Individual Network Service Descriptor - Method not implemented ... Test title: POST Individual Network Service Descriptor - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ PUT Individual Network Service Descriptor - Method not implemented ... Test title: PUT Individual Network Service Descriptor - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a new Network Service Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -186,7 +186,7 @@ DELETE Individual Network Service Descriptor with permitted authorization scope ... Test title: DELETE Individual Network Service Descriptor with permitted authorization scope ... Test objective: The objective is to test the deletion of an individual Network Service Descriptor with permitted authorization scope. ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in DISABLED operational state and NOT_IN_USE usage state. - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor is not available anymore in the NFVO @@ -200,7 +200,7 @@ DELETE Individual Network Service Descriptor with not permitted authorization sc ... Test title: DELETE Individual Network Service Descriptor with not permitted authorization scope ... Test objective: The objective is to test that the deletion of an individual Network Service Descriptor fails when using a not permitted authorization scope. ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in DISABLED operational state and NOT_IN_USE usage state. - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Network Service Descriptor is not available anymore in the NFVO diff --git a/SOL005/NSDManagement-API/IndividualPNFDArchiveArtifact.robot b/SOL005/NSDManagement-API/IndividualPNFDArchiveArtifact.robot index a3e02517..3a7d6c4e 100644 --- a/SOL005/NSDManagement-API/IndividualPNFDArchiveArtifact.robot +++ b/SOL005/NSDManagement-API/IndividualPNFDArchiveArtifact.robot @@ -12,7 +12,7 @@ GET Individual PNFD Archive Artifact ... Test title: GET Individual PNFD Archive Artifact ... Test objective: The objective is to test the retrieval of an individual PNFD Archive artifact ... Pre-conditions: One or more PNFD archives are on-boarded in the NFVO. - ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET Individual PNFD Archive Artifact with include_signatures parameter ... Test title: GET Individual PNFD Archive Artifact with include_signatures parameter ... Test objective: The objective is to test that the GET request read the whole content of the archive containing the artifact files successfully and also contain security certificates when requested with "include_signature" parameter, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more PNFD archives are on-boarded to the NFVO. - ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ GET Individual PNFD Archive Artifact in octet stream format ... Test title: GET Individual PNFD Archive Artifact in octet stream format ... Test objective: The objective is to test the retrieval of an individual PNFD Archive artifact when the NFVO cannot determine the artifact content type. The test performs a validation that the returned artifcat in is octet-stream format. ... Pre-conditions: One or more PNFD archives are on-boarded to the NFVO. - ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO cannot determine the content type of the artifact ... Post-Conditions: none @@ -50,7 +50,7 @@ GET Individual PNFD Archive Artifact with Range Request and NFVO supporting Rang ... Test title: GET Individual PNFD Archive Artifact with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of an individual PNFD Archive artifact when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more PNFD archives are on-boarded in the NFVO. - ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the PNFD Archive artifact ... Post-Conditions: none @@ -64,7 +64,7 @@ GET Individual PNFD Archive Artifact with Range Request and NFVO not supporting ... Test title: GET Individual PNFD Archive Artifact with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of an individual PNFD archive artifact, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full PNFD Archive artifact. ... Pre-conditions: One or more PNFD archives are on-boarded in the NFVO. - ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the PNFD Archive artifact ... Post-Conditions: none @@ -76,7 +76,7 @@ GET Individual PNFD Archive Artifact with invalid resource identifier ... Test title: GET Individual PNFD Archive Artifact with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual PNFD Archive Artifact fails when using an invalid resource identifier ... Pre-conditions: One or more PNFD archives are on-boarded in the NFVO. - ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ GET Individual PNFD Archive Artifact - Not Acceptable ... Test title: GET Individual PNFD Archive Artifact - Not Acceptable ... Test objective: The objective is to test that the retrieval of an individual PNFD Archive artifact fails when related request contained an "Accept" header not compatible with the Content type "application/zip" but the "include_signatures" flag was provided ... Pre-conditions: One or more PNFD archives are on-boarded to the NFVO. - ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ GET Individual PNFD Archive Artifact with conflict due to onboarding state ... GET Individual PNFD Archive Artifact with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of an individual PNFD Archive Artifact fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD archive for which the content is requested is different from ONBOARDED. - ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ GET Individual PNFD Archive Artifact with invalid Range Request ... Test title: GET Individual PNFD Archive Artifact with invalid Range Request ... Test objective: The objective is to test that the retrieval of an Individual PNFD Archive fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more PNFD Archives are on-boarded to the NFVO. - ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the PNFD Archive artifact ... Post-Conditions: none @@ -128,7 +128,7 @@ POST Individual PNFD Archive Artifact - Method not implemented ... Test title: POST Individual PNFD Archive Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create an individual artifact contained in an PNFD archive. ... Pre-conditions: none - ... Reference: Clause 5.4.7c.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -140,7 +140,7 @@ PUT Individual PNFD Archive Artifact - Method not implemented ... Test title: PUT Individual PNFD Archive Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an Individual PNFD Archive artifact ... Pre-conditions: none - ... Reference: Clause 5.4.7c.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -152,7 +152,7 @@ PATCH Individual PNFD Archive Artifact - Method not implemented ... Test title: PATCH Individual PNFD Archive Artifact - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an Individual PNFD Archive artifact ... Pre-conditions: none - ... Reference: Clause 5.4.7c.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ DELETE Individual PNFD Archive Artifact - Method not implemented ... Test title: DELETE Individual PNFD Archive Artifact - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an Individual PNFD Archive artifact ... Pre-conditions: none - ... Reference: Clause 5.4.7c.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -176,7 +176,7 @@ GET Individual PNFD Archive Artifact with permitted authorization scope ... Test title: GET Individual PNFD Archive Artifact with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual PNFD Archive artifact with permitted authorization scope ... Pre-conditions: One or more PNFD archives are on-boarded in the NFVO. - ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -188,7 +188,7 @@ GET Individual PNFD Archive Artifact with not permitted authorization scope ... Test title: GET Individual PNFD Archive Artifact with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of an individual PNFD Archive artifact fails when using not permitted authorization scope ... Pre-conditions: One or more PNFD archives are on-boarded in the NFVO. - ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7c.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot b/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot index d5e0aa8e..638ff186 100644 --- a/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot +++ b/SOL005/NSDManagement-API/IndividualPnfDescriptor.robot @@ -13,7 +13,7 @@ GET Individual PNF Descriptor Information ... Test title: GET Individual PNF Descriptor Information ... Test objective: The objective is to test the retrieval of an individual PNF Descriptor information and perform a JSON schema validation of the collected data structure ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET Individual PNF Descriptor Information with invalid resource identifier ... Test title: GET Individual PNF Descriptor Information with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual PNF Descriptor Information fails when using an invalid resource identifier ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ Update Individual PNF Descriptor ... Test title: Update Individual PNF Descriptor ... Test objective: The objective is to test the update of an individual PNF Descriptor and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The PNF Descriptor is modified according to the update request @@ -55,7 +55,7 @@ Update Individual PNF Descriptor with HTTP Etag precondition failure ... Test title: Update Individual PNF Descriptor with HTTP Etag precondition failure ... Test objective: The objective is to test that the update of a PNF Descriptor fails due to a precondition failure when using an uncorrect Http Etag identified. ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ Update Individual PNF Descriptor with HTTP Conditional Request Not Supported Pre ... Test title: Update Individual PNF Descriptor with HTTP Conditional Request Not Supported Precondition Failure ... Test objective: The objective is to test that the update of a PNF Descriptor fails due to the API Producer not supporting "Last-Modified" and "ETag" HTTP Headers ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.4, 4.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.6.3.4, 4.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: API Producer does not support "Last-Modified" and "ETag" HTTP Headers ... Post-Conditions: none @@ -79,7 +79,7 @@ POST Individual PNF Descriptor - Method not implemented ... Test title: POST Individual PNF Descriptor - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new PNF Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ PUT Individual PNF Descriptor - Method not implemented ... Test title: PUT Individual PNF Descriptor - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify a new PNF Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ DELETE Individual PNF Descriptor ... Test title: DELETE Individual PNF Descriptor ... Test objective: The objective is to test the deletion of an individual PNF Descriptor. ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The PNF Descriptor is not available anymore in the NFVO @@ -116,7 +116,7 @@ Update Individual PNF Descriptor with permitted authorization scope ... Test title: Update Individual PNF Descriptor with permitted authorization scope ... Test objective: The objective is to test the update of an individual PNF Descriptor with permitted authorization scope ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The PNF Descriptor is modified according to the update request @@ -130,7 +130,7 @@ Update Individual PNF Descriptor with not permitted authorization scope ... Test title: Update Individual PNF Descriptor with not permitted authorization scope ... Test objective: The objective is to test that the update of an individual PNF Descriptor fails when using not permitted authorization scope ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The PNF Descriptor is modified according to the update request diff --git a/SOL005/NSDManagement-API/IndividualSubscription.robot b/SOL005/NSDManagement-API/IndividualSubscription.robot index baf663bf..622952e6 100644 --- a/SOL005/NSDManagement-API/IndividualSubscription.robot +++ b/SOL005/NSDManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual NSD Management Subscription ... Test title: GET Individual NSD Management Subscription ... Test objective: The objective is to test the retrieval of individual NSD Management subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Individual NSD Management Subscription with invalid resource identifier ... Test title: GET Individual NSD Management Subscription with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual NSD Management subscription fails when using an invalid resource identifier ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ DELETE Individual NSD Management Subscription with invalid resource identifier ... Test title: DELETE Individual NSD Management Subscription with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual NSD Management subscription fails when using an invalid resource identifier ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ POST Individual NSD Management Subscription - Method not implemented ... Test title: POST Individual NSD Management Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NSD Management Subscription ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Individual NSD Management Subscription - Method not implemented ... Test title: PUT Individual NSD Management Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NSD Management subscription ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Individual NSD Management Subscription - Method not implemented ... Test title: PATCH Individual NSD Management Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NSD Management subscription ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Individual NSD Management Subscription ... Test title: DELETE Individual NSD Management Subscription ... Test objective: The objective is to test the deletion of an individual NSD Management subscription ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NSD Management Subscription is not available anymore in the NFVO @@ -101,7 +101,7 @@ GET Individual NSD Management Subscription with permitted authorization scope ... Test title: GET Individual NSD Management Subscription with permitted authorization scope ... Test objective: The objective is to test the retrieval of individual NSD Management subscription with permitted authorization scope ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ GET Individual NSD Management Subscription with not permitted authorization scop ... Test title: GET Individual NSD Management Subscription with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of individual NSD Management subscription fails when not permitted authorization scope ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/NSD.robot b/SOL005/NSDManagement-API/NSD.robot index f0a9a3a8..717e0996 100644 --- a/SOL005/NSDManagement-API/NSD.robot +++ b/SOL005/NSDManagement-API/NSD.robot @@ -12,7 +12,7 @@ Get single file NSD in Plain Format ... Test title: Get single file NSD in Plain Format ... Test objective: The objective is to test the retrieval of the NSD in plain format within a NSD archive and perform a validation that returned content is in plain format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NSD is implemented as a single file ... Post-Conditions: none @@ -25,7 +25,7 @@ Get NSD in Zip Format ... Test title: Get NSD in Zip Format ... Test objective: The objective is to test the retrieval of the NSD in zip format within a NSD archive and perform a validation that returned content is in zip format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get single file NSD in Plain or Zip Format ... Test title: Get single file NSDin Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file NSD within a NSD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that response is in Plain or Zip format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NSD is implemented as a single file ... Post-Conditions: none @@ -51,7 +51,7 @@ Get multi file NSD in Plain or Zip Format ... Test title: Get multi file NSD in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the multi file NSD within a NSD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NSD is implemented as a multi file ... Post-Conditions: none @@ -64,7 +64,7 @@ Get multi file NSD in Plain Format ... Test title: Get multi file NSD in Plain Format ... Test objective: The objective is to test that the retrieval of the multi file NSD within a NSD archive fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NSD is implemented as a multi file ... Post-Conditions: none @@ -77,7 +77,7 @@ Get NSD Content with invalid resource identifier ... Test title: Get NSD Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the NSD within a NSD archive fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ Get NSD with conflict due to onboarding state ... Test title: Get NSD with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the NSD within a NSD archive fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the NSD is different from ONBOARDED. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ Get NSD with security information ... Test title: Get NSD with security information ... Test objective: The objective is to test the retrieval of the NSD within a NSD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ POST NSD - Method not implemented ... Test title: POST NSD - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4a.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ PUT NSD - Method not implemented ... Test title: PUT NSD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -140,7 +140,7 @@ PATCH NSD - Method not implemented ... Test title: PATCH NSD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4a.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -152,7 +152,7 @@ DELETE NSD - Method not implemented ... Test title: DELETE NSD - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor ... Pre-conditions: none - ... Reference: Clause 5.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4a.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ Get single file NSD in Plain Format with permitted authorization scope ... Test title: Get single file NSD in Plain Format with permitted authorization scope ... Test objective: The objective is to test the retrieval of the NSD in plain format within a NSD archive with permitted authorization scope ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NSD is implemented as a single file ... Post-Conditions: none @@ -177,7 +177,7 @@ Get single file NSD in Plain Format with not permitted authorization scope ... Test title: Get single file NSD in Plain Format with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of the NSD in plain format within a NSD archive fails when using a not permitted authorization scope ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NSD is implemented as a single file ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/NSDArchiveContent.robot b/SOL005/NSDManagement-API/NSDArchiveContent.robot index f14230a0..e25bbbb2 100644 --- a/SOL005/NSDManagement-API/NSDArchiveContent.robot +++ b/SOL005/NSDManagement-API/NSDArchiveContent.robot @@ -24,7 +24,7 @@ Get NSD Content in Zip Format ... Test title: Get NSD Content in Zip Format ... Test objective: The objective is to test the retrieval of the NSD Content in zip format and perform a validation that returned content is in zip format ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ Get NSD Content with invalid resource identifier ... Test title: Get NSD Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the NSD Content fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ Get NSD Content with conflict due to onboarding state ... Test title: Get NSD Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the NSD Content fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the NSD for which the NSD Content is requested is different from ONBOARDED. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -96,7 +96,7 @@ GET NSD Content with Range Request and NFVO supporting Range Requests ... Test title: GET NSD Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of NSD Content when using a range request to return single range of bytes from the file, with the NFVO supporting it. The test also perform a validation that returned content matches the issued range ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the NSD file ... Post-Conditions: none @@ -111,7 +111,7 @@ GET NSD Content with Range Request and NFVO not supporting Range Requests ... Test title: GET NSD Content with Range Request and NFVO not supporting Range Requests ... Test objective: The objective is to test that the retrieval of NSD Content, when using a range request to return single range of bytes from the file and the NFVO not supporting it, returns the full NSD file. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support range requests to return single range of bytes from the NSD file ... Post-Conditions: none @@ -124,7 +124,7 @@ GET NSD Content with invalid Range Request ... Test title: GET NSD Content with invalid Range Request ... Test objective: The objective is to test that the retrieval of NSD Content fails when using a range request that does not match any available byte range in the file. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports range requests to return single range of bytes from the NSD file ... Post-Conditions: none @@ -137,7 +137,7 @@ Upload NSD Content as Zip file in asynchronous mode ... Test title: Upload NSD Content as Zip file in asynchronous mode ... Test objective: The objective is to test the upload of an NSD Content in Zip format when the NFVO supports the asynchronous upload mode. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the upload of NSD contents in asynchronous mode ... Post-Conditions: NSD Uploaded @@ -161,7 +161,7 @@ Upload NSD Content as Zip file in synchronous mode ... Test title: Upload NSD Content as Zip file in synchronous mode ... Test objective: The objective is to test the upload of an NSD Content in Zip format when the NFVO supports the synchronous upload mode. ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the upload of NSD contents in synchronous mode ... Post-Conditions: The NSD content is successfully uploaded and available in the NFVO @@ -185,7 +185,7 @@ Upload NSD Content with conflict due to onboarding state ... Test title: Upload NSD Content with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the NSD Content fails due to a conflict when the NSD is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the NSD for which the NSD Content is requested is different from ONBOARDED. - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -198,7 +198,7 @@ POST NSD Content - Method not implemented ... Test title: POST NSD Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -210,7 +210,7 @@ PATCH NSD Content - Method not implemented ... Test title: PATCH NSD Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -222,7 +222,7 @@ DELETE NSD Content - Method not implemented ... Test title: DELETE NSD Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -234,7 +234,7 @@ Upload NSD Content as Zip file in synchronous mode with permitted authorization ... Test title: Upload NSD Content as Zip file in synchronous mode with permitted authorization scope ... Test objective: The objective is to test the upload of an NSD Content in Zip format with permitted authorization scope ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the upload of NSD contents in synchronous mode ... Post-Conditions: The NSD content is successfully uploaded and available in the NFVO @@ -247,7 +247,7 @@ Upload NSD Content as Zip file in synchronous mode with not permitted authorizat ... Test title: Upload NSD Content as Zip file in synchronous mode with not permitted authorization scope ... Test objective: The objective is to test that the upload of an NSD Content in Zip format fails when using a not permitted authorization scope ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the upload of NSD contents in synchronous mode ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/NSDArchiveManifest.robot b/SOL005/NSDManagement-API/NSDArchiveManifest.robot index 9e47bb99..1655d8fc 100644 --- a/SOL005/NSDManagement-API/NSDArchiveManifest.robot +++ b/SOL005/NSDManagement-API/NSDArchiveManifest.robot @@ -12,7 +12,7 @@ Get NSD Archive Manifest ... Test title: Get NSD Archive Manifest ... Test objective: The objective is to test that GET method reads the content of the manifest file within an NSD archive ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get NSD Archive Manifest with security information ... Test title: Get NSD Archive Manifest with security information ... Test objective: The objective is to test the retrieval of content of the manifest file within an NSD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get NSD Archive Manifest with conflict due to onboarding state ... Test title: Get NSD Archive Manifest with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of content of the manifest file within an NSD archive fails due to a conflict when the NSD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the NSD is different from ONBOARDED. - ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ POST NSD Archive Manifest - Method not implemented ... Test title: POST NSD Archive Manifest - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4b.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT NSD Archive Manifest - Method not implemented ... Test title: PUT NSD Archive Manifest - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4b.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH NSD Archive Manifest - Method not implemented ... Test title: PATCH NSD Archive Manifest - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4b.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE NSD Archive Manifest - Method not implemented ... Test title: DELETE NSD Archive Manifest - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4b.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ Get NSD Archive Manifest with permitted authorization scope ... Test title: Get NSD Archive Manifest with permitted authorization scope ... Test objective: The objective is to test that GET method reads the content of the manifest file within an NSD archive with permitted authorization scope ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ Get NSD Archive Manifest with not permitted authorization scope ... Test title: Get NSD Archive Manifest with not permitted authorization scope ... Test objective: The objective is to test that GET method reads the content of the manifest file within an NSD archive fails when using not permitted authorization scope ... Pre-conditions: One or more NSDs are onboarded in the NFVO. - ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.4b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/NotificationEndpoint.robot b/SOL005/NSDManagement-API/NotificationEndpoint.robot index f5a4fc5d..06b8e742 100644 --- a/SOL005/NSDManagement-API/NotificationEndpoint.robot +++ b/SOL005/NSDManagement-API/NotificationEndpoint.robot @@ -14,7 +14,7 @@ NSD Onboarding Notification ... Test title: NSD Onboarding Notification ... Test objective: The objective is to test that NSD Onboarding Notification is delivered with success to the notification consumer. ... Pre-conditions: A NSD management subscription for onboarding notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ NSD Onboarding Failure Notification ... Test title: NSD Onboarding Failure Notification ... Test objective: The objective is to test that NSD Onboarding Failure Notification is delivered with success to the notification consumer. ... Pre-conditions: A NSD management subscription for onboarding failure notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ NSD Change Notification ... Test title: NSD Change Notification ... Test objective: The objective is to test that NSD Change Notification is delivered with success to the notification consumer. ... Pre-conditions: A NSD management subscription for change notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ NSD Deletion Notification ... Test title: NSD Deletion Notification ... Test objective: The objective is to test that NSD Deletion Notification is delivered with success to the notification consumer. ... Pre-conditions: A NSD management subscription for deletion notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ Pnfd Onboarding Notification ... Test title: Pnfd Onboarding Notification ... Test objective: The objective is to test that Pnfd Onboarding Notification is delivered with success to the notification consumer. ... Pre-conditions: A Pnfd management subscription for onboarding notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ Pnfd Onboarding Failure Notification ... Test title: Pnfd Onboarding Failure Notification ... Test objective: The objective is to test that Pnfd Onboarding Failure Notification is delivered with success to the notification consumer. ... Pre-conditions: A Pnfd management subscription for onboarding failure notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ Pnfd Deletion Notification ... Test title: pnfd Deletion Notification ... Test objective: The objective is to test that Pnfd Deletion Notification is delivered with success to the notification consumer. ... Pre-conditions: A Pnfd management subscription for deletion notification is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/Notifications.robot b/SOL005/NSDManagement-API/Notifications.robot index 35b85aa9..e72a4659 100644 --- a/SOL005/NSDManagement-API/Notifications.robot +++ b/SOL005/NSDManagement-API/Notifications.robot @@ -15,7 +15,7 @@ NSD Onboarding Notification ... Test title: NSD Onboarding Notification ... Test objective: The objective is to test the dispatch of NSD Onboarding notification when the NSD onboarding operation is successfully completed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NSD management subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ NSD Onboarding Failure Notification ... Test title: NSD Onboarding Failure Notification ... Test objective: The objective is to test the dispatch of NSD Onboarding failure notification when the NSD onboarding operation fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NSD management subscription for onboarding failure notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ NSD Operational State Change Notification ... Test title: NSD Operational State Change Notification ... Test objective: The objective is to test the dispatch of NSD Operational State Change notification when the NSD operational status change in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NSD management subscription for operational state change notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ NSD Deletion Notification ... Test title: NSD Deletion Notification ... Test objective: The objective is to test the dispatch of NSD Deletion notification when the NSD is deleted from the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NSD management subscription for deletion notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ PNFD Onboarding Notification ... Test title: PNFD Onboarding Notification ... Test objective: The objective is to test the dispatch of PNFD Onboarding notification when the PNFD onboarding operation is successfully completed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A PNFD management subscription for onboarding notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ PNFD Onboarding Failure Notification ... Test title: PNFD Onboarding Failure Notification ... Test objective: The objective is to test the dispatch of PNFD Onboarding failure notification when the PNFD onboarding operation fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A PNFD management subscription for onboarding failure notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ PNFD Deletion Notification ... Test title: PNFD Deletion Notification ... Test objective: The objective is to test the dispatch of PNFD Deletion notification when the PNFD is deleted from the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A PNFD management subscription for deletion notifications is available in the NFVO. - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/PNFD.robot b/SOL005/NSDManagement-API/PNFD.robot index d39fd0bf..181d2abf 100644 --- a/SOL005/NSDManagement-API/PNFD.robot +++ b/SOL005/NSDManagement-API/PNFD.robot @@ -13,7 +13,7 @@ Get single file PNFD in Plain Format ... Test title: Get single file PNFD in Plain Format ... Test objective: The objective is to test the retrieval of the PNFD in plain format within a PNFD archive and perform a validation that returned content is in plain format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The PNFD is implemented as a single file ... Post-Conditions: none @@ -26,7 +26,7 @@ Get PNFD in Zip Format ... Test title: Get PNFD in Zip Format ... Test objective: The objective is to test the retrieval of the PNFD in zip format within a PNFD archive and perform a validation that returned content is in zip format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Get single file PNFD in Plain or Zip Format ... Test title: Get single file PNFDin Plain or Zip Format ... Test objective: The objective is to test the retrieval of the single file PNFD within a PNFD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that response is in Plain or Zip format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The PNFD is implemented as a single file ... Post-Conditions: none @@ -52,7 +52,7 @@ Get multi file PNFD in Plain or Zip Format ... Test title: Get multi file PNFD in Plain or Zip Format ... Test objective: The objective is to test the retrieval of the multi file PNFD within a PNFD archive when requesting Plain or Zip format to NFVO by including both formats in the request, and perform a validation that returned content is in Zip format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The PNFD is implemented as a multi file ... Post-Conditions: none @@ -65,7 +65,7 @@ Get multi file PNFD in Plain Format ... Test title: Get multi file PNFD in Plain Format ... Test objective: The objective is to test that the retrieval of the multi file PNFD within a PNFD archive fails when requesting it in Plain format, and perform a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The PNFD is implemented as a multi file ... Post-Conditions: none @@ -78,7 +78,7 @@ Get PNFD Content with invalid resource identifier ... Test title: Get PNFD Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the PNFD within a PNFD archive fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ Get PNFD with conflict due to onboarding state ... Test title: Get PNFD with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the PNFD within a PNFD archive fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD is different from ONBOARDED. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ Get PNFD with security information ... Test title: Get PNFD with security information ... Test objective: The objective is to test the retrieval of the PNFD within a PNFD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ POST PNFD - Method not implemented ... Test title: POST PNFD - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new PNFD ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7a.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PUT PNFD - Method not implemented ... Test title: PUT PNFD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update PNFD ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7a.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ PATCH PNFD - Method not implemented ... Test title: PATCH PNFD - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update PNFD ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7a.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ DELETE PNFD - Method not implemented ... Test title: DELETE PNFD - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete PNFD ... Pre-conditions: none - ... Reference: Clause 5.4.7a.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7a.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -165,7 +165,7 @@ Get single file PNFD in Plain Format with permitted authorization scope ... Test title: Get single file PNFD in Plain Format with permitted authorization scope ... Test objective: The objective is to test the retrieval of the PNFD in plain format within a PNFD archive with permitted authorization scope ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The PNFD is implemented as a single file ... Post-Conditions: none @@ -178,7 +178,7 @@ Get single file PNFD in Plain Format with not permitted authorization scope ... Test title: Get single file PNFD in Plain Format with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of the PNFD in plain format within a PNFD archive fails when using a not permitted authorization scope ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7a.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The PNFD is implemented as a single file ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/PNFDArchiveContent.robot b/SOL005/NSDManagement-API/PNFDArchiveContent.robot index 7605003a..9416ab4c 100644 --- a/SOL005/NSDManagement-API/PNFDArchiveContent.robot +++ b/SOL005/NSDManagement-API/PNFDArchiveContent.robot @@ -13,7 +13,7 @@ Get PNFD Content ... Test title: Get PNFD Content ... Test objective: The objective is to test the retrieval of the PNFD Content in zip format and perform a validation that returned content is in plain format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ Get PNFD Content with invalid resource identifier ... Test title: Get PNFD Content with invalid resource identifier ... Test objective: The objective is to test that the retrieval of the PNFD Content fails when using an invalid resource identifier ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Get PNFD Content with conflict due to onboarding state ... Test title: Get PNFD Content with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of the PNFD Content fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD for which the PNFD Content is requested is different from ONBOARDED. - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ Upload PNFD Content as zip file ... Test title: Upload PNFD Content as zip file ... Test objective: The objective is to test the upload of a PNFD Content in plain text format. ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The uploaded PNFD content is available in the NFVO @@ -65,7 +65,7 @@ Upload PNFD Content with conflict due to onboarding state ... Test title: Upload PNFD Content with conflict due to onboarding state ... Test objective: The objective is to test that the upload of the PNFD Content fails due to a conflict when the PNFD is not in onboarding state CREATED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD for which the PNFD Content is requested is different from CREATED. - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ POST PNFD Content - Method not implemented ... Test title: POST PNFD Content - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new PNF Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ PATCH PNFD Content - Method not implemented ... Test title: PATCH PNFD Content - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update PNF Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ DELETE PNFD Content - Method not implemented ... Test title: DELETE PNFD Content - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete PNF Descriptor content ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -114,7 +114,7 @@ Get PNFD Content with Range Request and NFVO supporting Range Requests ... Test title: Get PNFD Content with Range Request and NFVO supporting Range Requests ... Test objective: The objective is to test the retrieval of the PNFD Content in plain format when using a range request to return single range of bytes from the file, with the NFVO supporting it ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ Get PNFD Content with invalid Range Request ... Test title: Get PNFD Content with invalid Range Request ... Test objective: The objective is to test the retrieval of the PNFD Content in plain format and perform a validation that returned content is in plain format ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ Upload PNFD Archive Content ... Test title: Upload PNFD Archive Content ... Test objective: The objective is to test the PNFD archive has been accepted for uploading, but the processing has not been completed. ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -154,7 +154,7 @@ Upload PNFD Content as zip file with permitted authorization scope ... Test title: Upload PNFD Content as zip file with permitted authorization scope ... Test objective: The objective is to test the upload of a PNFD Content in zip format with permitted authorization scope. ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The uploaded PNFD content is available in the NFVO @@ -167,7 +167,7 @@ Upload PNFD Content as zip file with not permitted authorization scope ... Test title: Upload PNFD Content as zip file with not permitted authorization scope ... Test objective: The objective is to test the upload of a PNFD Content in zip format fails when using not permitted authorization scope. ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: noe diff --git a/SOL005/NSDManagement-API/PNFDArchiveManifest.robot b/SOL005/NSDManagement-API/PNFDArchiveManifest.robot index a069715f..46dc4daf 100644 --- a/SOL005/NSDManagement-API/PNFDArchiveManifest.robot +++ b/SOL005/NSDManagement-API/PNFDArchiveManifest.robot @@ -12,7 +12,7 @@ Get PNFD Archive Manifest ... Test title: Get PNFD Archive Manifest ... Test objective: The objective is to test that GET method reads the content of the manifest file within an PNFD archive ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Get PNFD Archive Manifest with security information ... Test title: Get PNFD Archive Manifest with security information ... Test objective: The objective is to test the retrieval of content of the manifest file within an PNFD archive shall include in the ZIP archive the security information when requested with "include_signature" parameter ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ Get PNFD Archive Manifest with conflict due to onboarding state ... Test title: Get PNFD Archive Manifest with conflict due to onboarding state ... Test objective: The objective is to test that the retrieval of content of the manifest file within an PNFD archive fails due to a conflict when the PNFD is not in onboarding state ONBOARDED in the NFVO. The test also performs a validation of the JSON schema validation of the failed operation HTTP response ... Pre-conditions: The onboarding state of the PNFD is different from ONBOARDED. - ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ POST PNFD Archive Manifest - Method not implemented ... Test title: POST PNFD Archive Manifest - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.7b.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7b.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT PNFD Archive Manifest - Method not implemented ... Test title: PUT PNFD Archive Manifest - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.7b.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7b.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH PNFD Archive Manifest - Method not implemented ... Test title: PATCH PNFD Archive Manifest - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.7b.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7b.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE PNFD Archive Manifest - Method not implemented ... Test title: DELETE PNFD Archive Manifest - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete Network Service Descriptor Archive Manifest ... Pre-conditions: none - ... Reference: Clause 5.4.7b.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7b.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ Get PNFD Archive Manifest with permitted authorization scope ... Test title: Get PNFD Archive Manifest with permitted authorization scope ... Test objective: The objective is to test that GET method reads the content of the manifest file within an PNFD archive with permitted authorization scope ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ Get PNFD Archive Manifest with not permitted authorization scope ... Test title: Get PNFD Archive Manifest with not permitted authorization scope ... Test objective: The objective is to test that GET method to read the content of the manifest file within an PNFD archive fails when a not permitted authorization scope ... Pre-conditions: One or more PNFDs are onboarded in the NFVO. - ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.7b.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/PNFDescriptors.robot b/SOL005/NSDManagement-API/PNFDescriptors.robot index f79b7a45..63d2c520 100644 --- a/SOL005/NSDManagement-API/PNFDescriptors.robot +++ b/SOL005/NSDManagement-API/PNFDescriptors.robot @@ -13,7 +13,7 @@ GET all PNF Descriptors Information ... Test title: GET all PNF Descriptors Information ... Test objective: The objective is to test the retrieval of all the PNF Descriptors information and perform a JSON schema and content validation of the collected data structure ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET PNF Descriptors Information with attribute-based filter ... Test title: GET PNF Descriptors Information with attribute-based filter ... Test objective: The objective is to test the retrieval of PNF Descriptors information using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET PNF Descriptors Information with invalid attribute-based filter ... Test title: GET PNF Descriptors Information with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of PNF Descriptors information fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET all PNF Descriptors Information with "all_fields" attribute selector ... Test title: GET all PNF Descriptors Information with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "all_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET all PNF Descriptors Information with "exclude_default" attribute selector ... Test title: GET all PNF Descriptors Information with "exclude_default" attribute selector ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "exclude_default" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ GET all PNF Descriptors Information with "fields" attribute selector ... Test title: GET all PNF Descriptors Information with "fields" attribute selector ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "fields" selector ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "fields" attribute selector ... Post-Conditions: none @@ -95,7 +95,7 @@ GET all PNF Descriptors Information with "exclude_fields" attribute selector ... Test title: GET all PNF Descriptors Information with "exclude_fields" attribute selector ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "exclude_fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_fields" selector ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "exclude_fields" attribute selector ... Post-Conditions: none @@ -109,7 +109,7 @@ Create new PNF Descriptor Resource ... Test title: Create new PNF Descriptor Resource ... Test objective: The objective is to test the creation of a new Create new PNF Descriptor resource and perform the JSON schema validation of the returned structure ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The PNF Descriptor resource is successfully created on the NFVO @@ -124,7 +124,7 @@ PUT all PNF Descriptors - Method not implemented ... Test title: PUT all PNF Descriptors Information - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify PNF Descriptors Information ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -136,7 +136,7 @@ PATCH all PNF Descriptors - Method not implemented ... Test title: PATCH all PNF Descriptors Information - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NF Descriptors Information ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ DELETE all PNF Descriptors - Method not implemented ... Test title: DELETE all PNF Descriptors Information - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete PNF Descriptors Information ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,7 @@ GET all PNF Descriptors Information as Paged Response ... Test title: GET all PNF Descriptors Information as Paged Response ... Test objective: The objective is to test the retrieval of all the PNF Descriptors information as a Paged Response. ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -173,7 +173,7 @@ GET PNF Descriptors Information - Bad Request Response too Big ... Test title: GET PNF Descriptors Information - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of PNF Descriptors information fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -186,7 +186,7 @@ GET all PNF Descriptors Information with "exclude_default" and "fields" attribut ... Test title: GET all PNF Descriptors Information with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to test the retrieval of all PNF Descriptors Information with "exclude_default" and "fields" attribute selector, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued "exclude_default" and "fields" selector ... Pre-conditions: One or more PNF Descriptors are onboarded in the NFVO. - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "exclude_default" and "fields" attribute selector ... Post-Conditions: none @@ -200,7 +200,7 @@ Create new PNF Descriptor Resource with permitted authorization scope ... Test title: Create new PNF Descriptor Resource with permitted authorization scope ... Test objective: The objective is to test the creation of a new Create new PNF Descriptor resource with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The PNF Descriptor resource is successfully created on the NFVO @@ -215,7 +215,7 @@ Create new PNF Descriptor Resource with not permitted authorization scope ... Test title: Create new PNF Descriptor Resource with not permitted authorization scope ... Test objective: The objective is to test that the creation of a new Create new PNF Descriptor resource fails when using not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/Subscriptions.robot b/SOL005/NSDManagement-API/Subscriptions.robot index bbe5044a..f1d9bcd6 100644 --- a/SOL005/NSDManagement-API/Subscriptions.robot +++ b/SOL005/NSDManagement-API/Subscriptions.robot @@ -15,7 +15,7 @@ Get All NSD Management Subscriptions ... Test title: Get All NSD Management Subscriptions ... Test objective: The objective is to test the retrieval of all NSD Management subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ Get NSD Management Subscriptions with attribute-based filter ... Test title: Get NSD Management Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of NSD Management subscriptions using attribute-based filter, perform a JSON schema validation of the collected data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ Get NSD Management Subscriptions with invalid attribute-based filter ... Test title: Get NSD Management Subscriptions with attribute-based filters ... Test objective: The objective is to test that the retrieval of NSD Management subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET NSD Management Subscription with invalid resource endpoint ... Test title: GET NSD Management Subscription with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all NSD Management subscriptions fails when using invalid resource endpoint. ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ Create new NSD Management subscription ... Test title: Create new NSD Management subscription ... Test objective: The objective is to test the creation of a new NSD Management subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NSD Management subscription is successfully set and it matches the issued subscription @@ -84,7 +84,7 @@ Create duplicated NSD Management subscription with NFVO not creating duplicated ... Test title: Create duplicated NSD Management subscription with NFVO not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated NSD Management subscription and check that no new subscription is created by the NFVO and a link to the original subscription is returned ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing NSD Management subscription returned is available in the NFVO @@ -100,7 +100,7 @@ Create duplicated NSD Management subscription with NFVO creating duplicated subs ... Test title: Create duplicated NSD Management subscription with NFVO creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated NSD Management subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated NSD Management subscription is successfully set and it matches the issued subscription @@ -115,7 +115,7 @@ PUT NSD Management Subscriptions - Method not implemented ... Test title: PUT NSD Management Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NSD Management subscriptions ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ PATCH NSD Management Subscriptions - Method not implemented ... Test title: PATCH NSD Management Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NSD Management subscriptions ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -139,7 +139,7 @@ DELETE NSD Management Subscriptions - Method not implemented ... Test title: DELETE NSD Management Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete NSD Management subscriptions ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NSD Management subscriptions are not deleted by the failed operation @@ -152,7 +152,7 @@ Get All NSD Management Subscriptions as Paged Response ... Test title: Get All NSD Management Subscriptions as Paged Response ... Test objective: The objective is to test the retrieval of all NSD Management subscriptions as a Paged Response. ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -165,7 +165,7 @@ Get NSD Management Subscriptions - Bad Request Response too Big ... Test title: Get NSD Management Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NSD Management subscriptions fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -178,7 +178,7 @@ Create new NSD Management subscription - Unprocessable Content ... Test title: Create new NSD Management subscription - Unprocessable Content ... Test objective: The objective is to test the creation of a new NSD Management subscription fials when 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 ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -190,7 +190,7 @@ Get All NSD Management Subscriptions with permitted authorization scope ... Test title: Get All NSD Management Subscriptions with permitted authorization scope ... Test objective: The objective is to test the retrieval of all NSD Management subscriptions with permitted authorization scope ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -203,7 +203,7 @@ Get All NSD Management Subscriptions with not permitted authorization scope ... Test title: Get All NSD Management Subscriptions with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of all NSD Management subscriptions fails when using a not permitted authorization scope ... Pre-conditions: At least one NSD Management subscription is available in the NFVO. - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSDManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml b/SOL005/NSDManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml index f0ef3b27..92cf5f34 100644 --- a/SOL005/NSDManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml +++ b/SOL005/NSDManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml @@ -27,7 +27,7 @@ topology_template: flavour_id: "VNF-A_flavor" flavour_description: "VNF-A flavor" vnfm_info: - - 'etsivnfm:v2.3.1' + - 'etsivnfm:v5.1.1' requirements: virtualLink: ext_a_right: "vl_right" @@ -47,7 +47,7 @@ topology_template: flavourId: "VNF-B_flavor" flavourDescription: "VNF-B flavor" vnfm_info: - - 'etsivnfm:v4.5.1' + - 'etsivnfm:v5.1.1' requirements: virtualLink: ext_b_left: "vl_left" -- GitLab From abc9e0755288e9795a18623090b1e92f97a58281 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 18:19:15 +0100 Subject: [PATCH 117/141] updated reference version to 5.1.1 to NS FM tests --- SOL005/NSFaultManagement-API/Alarms.robot | 46 +++++++++---------- .../IndividualAlarm.robot | 22 ++++----- .../IndividualSubscription.robot | 14 +++--- .../NotificationEndpoint.robot | 6 +-- .../NSFaultManagement-API/Notifications.robot | 12 ++--- .../NSFaultManagement-API/Subscriptions.robot | 46 +++++++++---------- 6 files changed, 73 insertions(+), 73 deletions(-) diff --git a/SOL005/NSFaultManagement-API/Alarms.robot b/SOL005/NSFaultManagement-API/Alarms.robot index 138740b0..b5cb4488 100644 --- a/SOL005/NSFaultManagement-API/Alarms.robot +++ b/SOL005/NSFaultManagement-API/Alarms.robot @@ -12,7 +12,7 @@ POST Alarms - Method not implemented ... Test title:POST Alarms - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create Fault management alarms on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET information about multiple alarms ... Test title: GET information about multiple alarms ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ GET information about multiple alarms with filters ... Test title: GET information about multiple alarms with filters ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ GET information about multiple alarms Bad Request Invalid attribute-based filter ... Test title: GET information about multiple alarms Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to try to retrieve information about the alarm list with invalid filters and perform a JSON schema and content validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ GET information about multiple alarms with "all_fields" attribute selector ... Test title: GET information about multiple alarms with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ GET information about multiple alarms with exclude_default attribute selector ... Test title: GET information about multiple alarms with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ GET information about multiple alarms with fields attribute selector ... Test title: GET information about multiple alarms with fields attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ GET information about multiple alarms with "exclude_fields" attribute selector ... Test title: GET information about multiple alarms with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ PUT Alarms - Method not implemented ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Fault management alarms on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -128,7 +128,7 @@ PATCH Alarms - Method not implemented ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Fault management alarms on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -140,7 +140,7 @@ DELETE Alarms - Method not implemented ... Test title: DELETE Alarms - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Fault management alarms on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -152,7 +152,7 @@ GET information about multiple alarms as Paged Response ... Test title: GET information about multiple alarms as Paged Response ... Test objective: The objective is to retrieve information about the alarm list as paged response. ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -165,7 +165,7 @@ GET information about multiple alarms - Bad Request Response too Big ... Test title: GET information about multiple alarms - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of information about the alarm list fails because response is too big, and perform a JSON schema and content validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -178,7 +178,7 @@ GET information about multiple alarms with filter "id" ... Test title: GET information about multiple alarms with filter "id" ... Test objective: The objective is to retrieve information about the alarm list with filter "id" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -192,7 +192,7 @@ GET information about multiple alarms with filter "rootCauseFaultyComponent.faul ... Test title: GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyNestedNsInstanceId" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyComponent.faultyNestedNsInstanceId" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -206,7 +206,7 @@ GET information about multiple alarms with filter "rootCauseFaultyComponent.faul ... Test title: GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyNsVirtualLinkInstanceId" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyComponent.faultyNsVirtualLinkInstanceId" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -220,7 +220,7 @@ GET information about multiple alarms with filter "rootCauseFaultyComponent.faul ... Test title: GET information about multiple alarms with filter "rootCauseFaultyComponent.faultyVnfInstanceId" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyComponent.faultyVnfInstanceId" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -234,7 +234,7 @@ GET information about multiple alarms with filter "rootCauseFaultyResource.fault ... Test title: GET information about multiple alarms with filter "rootCauseFaultyResource.faultyResourceType" ... Test objective: The objective is to retrieve information about the alarm list with filter "rootCauseFaultyResource.faultyResourceType" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -248,7 +248,7 @@ GET information about multiple alarms with filter "eventType" ... Test title: GET information about multiple alarms with filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with filter "eventType" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -262,7 +262,7 @@ GET information about multiple alarms with filter "perceivedSeverity" ... Test title: GET information about multiple alarms with filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with filter "perceivedSeverity" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -276,7 +276,7 @@ GET information about multiple alarms with filter "probableCause" ... Test title: GET information about multiple alarms with filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with filter "probableCause" and perform a JSON schema and content validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -290,7 +290,7 @@ GET information about multiple alarms with permitted authorization scope ... Test title: GET information about multiple alarms with permitted authorization scope ... Test objective: The objective is to retrieve information about the alarm list with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -303,7 +303,7 @@ GET information about multiple alarms with not permitted authorization scope ... Test title: GET information about multiple alarms with not permitted authorization scope ... Test objective: The objective is to test that retrieve information about the alarm list fails when using not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSFaultManagement-API/IndividualAlarm.robot b/SOL005/NSFaultManagement-API/IndividualAlarm.robot index de94545c..d9383d69 100644 --- a/SOL005/NSFaultManagement-API/IndividualAlarm.robot +++ b/SOL005/NSFaultManagement-API/IndividualAlarm.robot @@ -14,7 +14,7 @@ POST Individual Alarm - Method not implemented ... Test title:POST Individual Alarm - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for Fault management individual alarm on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET information about Individual Alarm ... Test title: GET information about Individual Alarm ... Test objective: The objective is to retrieve information about individual alarm and perform a JSON schema and content validation of the returned alarm data structure ... Pre-conditions: The related alarm exists - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET information about Invalid Individual Alarm ... Test title: GET information about Invalid Individual Alarm ... Test objective: The objective is to try to read an Invalid individual alarm and get 404 not found response code ... Pre-conditions: The related alarm does not exists - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Individual Alarm - Method not implemented ... Test title:PUT Individual Alarm - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Fault management individual alarm on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Alarm ... Test title: Modify an individual alarm resource ... Test objective: The objective is to Modify an individual alarm resource and perform a JSON schema and content validation of the returned alarm modifications data structure ... Pre-conditions: The related alarm exists - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Alarm - Conflict ... Test title: Modify an individual alarm resource - Conflict ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the alarm is already in the state that is requested to be set ... Pre-conditions: The related alarm exists - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ PATCH Alarm - Precondition failed ... Test title: Modify an individual alarm resource - Precondition failed ... Test objective: The objective is to test that an individual alarm resource cannot be modifed if the resource was modified by another entity ... Pre-conditions: The related alarm exists - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: @@ -103,7 +103,7 @@ PATCH Alarm - Precondition failed HTTP Conditional Request Not Supported ... Test title: Modify an individual alarm resource - Precondition failed HTTP Conditional Request Not Supported ... Test objective: The objective is to test that an individual alarm resource cannot be modifed if API Producer does not support "Last-Modified" and "ETag" HTTP Headers ... Pre-conditions: The related alarm exists - ... Reference: Clause 8.4.3.3.4, 4.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.3.3.4, 4.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: API Producer does not support "Last-Modified" and "ETag" HTTP Headers ... Post-Conditions: @@ -116,7 +116,7 @@ DELETE Individual Alarm - Method not implemented ... Test title:DELETE Individual Alarm - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for Fault management individual alarm on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ PATCH Alarm with permitted authorization scope [Documentation] Test ID: 5.3.3.2.9 ... Test title: Modify an individual alarm resource with permitted authorization scope ... Test objective: The objective is to Modify an individual alarm resource with permitted authorization scope - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -139,7 +139,7 @@ PATCH Alarm with not permitted authorization scope [Documentation] Test ID: 5.3.3.2.10 ... Test title: Modify an individual alarm resource with not permitted authorization scope ... Test objective: The objective is to test that Modify an individual alarm resource fails when using not permitted authorization scope - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSFaultManagement-API/IndividualSubscription.robot b/SOL005/NSFaultManagement-API/IndividualSubscription.robot index 1c819ad1..8ee550f3 100644 --- a/SOL005/NSFaultManagement-API/IndividualSubscription.robot +++ b/SOL005/NSFaultManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ Post Individual Subscription - Method not implemented ... Test title:Post Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for Fault management subscription on NFV ... Pre-conditions:none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ Get Information about an individual subscription ... Test title: Get Information about an individual subscription ... Test objective: The objective is to read an individual subscription for NFVO alarms subscribed by the client and perform a JSON schema and content validation of the returned fault management individual subscription data structure ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT an individual subscription - Method not implemented ... Test title:PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for Fault management subscription on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH an individual subscription - Method not implemented ... Test title:PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for Fault management subscription on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE an individual subscription ... Test title:DELETE an individual subscription ... Test objective: The objective is to DELETE an individual subscription ... Pre-conditions: The Subsbcription already exists - ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: subscription is not deleted @@ -71,7 +71,7 @@ Get Information about an individual subscription with permitted authorization sc [Documentation] Test ID: 5.3.3.4.6 ... Test title: Get Information about an individual subscription with permitted authorization scope ... Test objective: The objective is to read an individual subscription for NFVO alarms subscribed by the client with permitted authorization scope - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ Get Information about an individual subscription with not permitted authorizatio [Documentation] Test ID: 5.3.3.4.7 ... Test title: Get Information about an individual subscription with not permitted authorization scope ... Test objective: The objective is to test that read an individual subscription for NFVO alarms subscribed by the client fails when using a not permitted authorization scope - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSFaultManagement-API/NotificationEndpoint.robot b/SOL005/NSFaultManagement-API/NotificationEndpoint.robot index e871c755..6c0c8858 100644 --- a/SOL005/NSFaultManagement-API/NotificationEndpoint.robot +++ b/SOL005/NSFaultManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ NS Fault Alarm Notification ... Test title: NS Fault Alarm Notification ... Test objective: The objective is to test that NS Fault Alarm Notification is delivered with success to the notification consumer ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ NS Fault Alarm Cleared Notification ... Test title: NS Fault Alarm Cleared Notification ... Test objective: The objective is to test that NS Fault Alarm Cleared Notification is delivered with success to the notification consumer ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm cleared notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ NS Fault Alarm List Rebuilt Notification ... Test title: NS Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test that NS Fault Alarm List Rebuilt Notification is delivered with success to the notification consumer ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSFaultManagement-API/Notifications.robot b/SOL005/NSFaultManagement-API/Notifications.robot index cf6b810f..bebd24ca 100644 --- a/SOL005/NSFaultManagement-API/Notifications.robot +++ b/SOL005/NSFaultManagement-API/Notifications.robot @@ -18,7 +18,7 @@ NS Fault Alarm Notification ... Test title: NS Fault Alarm Notification ... Test objective: The objective is to test the dispatch of NS Fault Alarm Notification when a virtualised resource within an NS instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS instance is instantiated, and a subscription for fault alarm notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -31,7 +31,7 @@ NS Fault Alarm Cleared Notification ... Test title: NS Fault Alarm Cleared Notification ... Test objective: The objective is to test the dispatch of NS Fault Alarm Cleared Notification when a faulty virtualised resource within an NS instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ NS Fault Alarm List Rebuilt Notification ... Test title: NS Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test the dispatch of NS Fault Alarm List Rebuilt Notification when the NFVO decides to rebuild the list of its NS alarms, e.g. due to a corruption in the alarm storage, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS instance is instantiated, one or more virtualised resource are in faulty state, and a subscription for fault alarm list rebuilt notifications is available in the NFVO. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -57,7 +57,7 @@ NS Fault Alarm Notification with Instrumental Platform Hook ... Test title: NS Fault Alarm Notification with Instrumental Platform Hook ... Test objective: The objective is to test the dispatch of NS Fault Alarm Notification when a virtualised resource failure within an NS instance is automatically triggered through an instrumenation platform, and perform a JSON schema and content validation of the delivered notification. ... Pre-conditions: A NS instance is instantiated - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: An instrumentation platform is available to trigger the NS instance failure condition ... Post-Conditions: none @@ -70,7 +70,7 @@ NS Fault Alarm Cleared Notification with Instrumental Platform Hook ... Test title: NS Fault Alarm Cleared Notification with Instrumental Platform Hook ... Test objective: The objective is to test the dispatch of NS Fault Clear Alarm Notification when a virtualised resource failure within an NS instance is automatically cleared through an instrumenation platform, and perform a JSON schema and content validation of the delivered notification. ... Pre-conditions: A NS instance is instantiated and a virtualised resource is in faulty state. - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: An instrumentation platform is available to trigger the NS instance failure clear condition ... Post-Conditions: none @@ -83,7 +83,7 @@ NS Fault Alarm List Rebuilt Notification with Instrumental Platform Hook ... Test title: NS Fault Alarm List Rebuilt Notification with Instrumental Platform Hook ... Test objective: The objective is to test the dispatch of NS Fault Alarm List Rebuilt Notification when the NFVO decision to rebuild the list of its NS alarms is automatically triggered through an instrumentation platform, and perform a JSON schema and content validation of the delivered notification. ... Pre-conditions: A NS instance is instantiated and one or more virtualised resource are in faulty state - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: An instrumentation platform is available to trigger the NS instance alarm list rebuilt condition ... Post-Conditions: none diff --git a/SOL005/NSFaultManagement-API/Subscriptions.robot b/SOL005/NSFaultManagement-API/Subscriptions.robot index d53185cf..16b6bd6e 100644 --- a/SOL005/NSFaultManagement-API/Subscriptions.robot +++ b/SOL005/NSFaultManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ Create a new alarm subscription ... Test title: Create a new alarm subscription ... Test objective: The objective is to create a new Fault management alarm subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure ... Pre-conditions: no subscription with the same filter and callbackUri exists - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ Create a duplicated Subscription ... Test title: Create a duplicated alarm subscription ... Test objective: The objective is to create a new subscription with the NFV allowing duplication and perform a JSON schema and content validation of the returned fault management alarms subscription data structure.. ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: none @@ -54,7 +54,7 @@ Retrieve a list of alarm subscriptions ... Test title: Retrieve a list of alarm subscriptions ... Test objective: The objective is to retrieve the list of active subscriptions and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ Retrieve a list of alarm subscriptions - Filter ... Test title: Retrieve a list of alarm subscriptions - Filter ... Test objective: The objective is to retrieve the list of active subscriptions with filter and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective:The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters and perform a JSON schema and content validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ GET subscriptions with "all_fields" attribute selector ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -106,7 +106,7 @@ GET subscriptions with "exclude_default" attribute selector ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -119,7 +119,7 @@ GET subscriptions with "fields" attribute selector ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -132,7 +132,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -145,7 +145,7 @@ PUT subscriptions - Method not implemented ... Test title:PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for Fault management subscriptions on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -157,7 +157,7 @@ PATCH subscriptions - Method not implemented ... Test title:PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for Fault management subscriptions on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -169,7 +169,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for Fault management subscriptions on NFV ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -181,7 +181,7 @@ Retrieve a list of alarm subscriptions as Paged Response ... Test title: Retrieve a list of alarm subscriptions as Paged Response ... Test objective: The objective is to retrieve the list of active subscriptions as paged response. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -194,7 +194,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective:The objective is test that the retrieval of active subscriptions list fails because response is too big, and perform a JSON schema and content validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -207,7 +207,7 @@ Retrieve a list of alarm subscriptions with filter "id" ... Test title: Retrieve a list of alarm subscriptions with filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -221,7 +221,7 @@ Retrieve a list of alarm subscriptions with filter "filter.notificationTypes" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -235,7 +235,7 @@ Retrieve a list of alarm subscriptions with filter "filter.faultyResourceTypes" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.faultyResourceTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.faultyResourceTypes" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -249,7 +249,7 @@ Retrieve a list of alarm subscriptions with filter "filter.perceivedSeverities" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -263,7 +263,7 @@ Retrieve a list of alarm subscriptions with filter "filter.eventTypes" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -277,7 +277,7 @@ Retrieve a list of alarm subscriptions with filter "filter.probableCauses" ... Test title: Retrieve a list of alarm subscriptions with filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -291,7 +291,7 @@ Create a new alarm subscription - Unprocessable Content ... Test title: Create a new alarm subscription- Unprocessable Content ... Test objective: The objective is to test that creation of a new Fault management alarm subscriptions fials when 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. ... Pre-conditions: - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -304,7 +304,7 @@ Create a new alarm subscription - Unprocessable Content ... Test title: Retrieve a list of alarm subscriptions with permitted authorization scope ... Test objective: The objective is to retrieve the list of active subscriptions with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -317,7 +317,7 @@ Create a new alarm subscription - Unprocessable Content ... Test title: Retrieve a list of alarm subscriptions with not permitted authorization scope ... Test objective: The objective is to test that retrieve the list of active subscriptions fails when using not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 7f3b89b27e8b8a719d191a025859801ac7e5d38d Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Mon, 6 Jan 2025 12:17:27 +0100 Subject: [PATCH 118/141] updated Alarm, Alarms, AlarmNotification schema as per NFVSOL(24)000024 --- .../schemas/alarm.schema.json | 388 ++++++++------- .../schemas/alarmNotification.schema.json | 470 +++++++++--------- .../schemas/alarms.schema.json | 395 ++++++++------- 3 files changed, 674 insertions(+), 579 deletions(-) diff --git a/SOL005/NSFaultManagement-API/schemas/alarm.schema.json b/SOL005/NSFaultManagement-API/schemas/alarm.schema.json index c57cc1d4..cbe918b9 100644 --- a/SOL005/NSFaultManagement-API/schemas/alarm.schema.json +++ b/SOL005/NSFaultManagement-API/schemas/alarm.schema.json @@ -1,176 +1,216 @@ { - "description": "The alarm data type encapsulates information about an alarm. It shall comply with the provisions defined in Table 8.5.2.4-1\n", - "type": "object", - "required": ["id", "managedObjectId", "alarmRaisedTime", "ackState", "perceivedSeverity", "eventTime", "eventType", "probableCause", "isRootCause", "_links"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "managedObjectId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "rootCauseFaultyComponent": { - "description": "This type represents the faulty component that has a negative impact on an NS. It shall comply with the provisions defined in Table 8.5.3.4-1. NOTE:\tAt least one of the attributes shall be present.\n", - "type": "object", - "properties": { - "faultyNestedNsInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "faultyResourceType": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "faultyNsVirtualLinkInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - }, - "rootCauseFaultyResource": { - "description": "This type represents the faulty virtual resources that have a negative impact on a NS.\n", - "type": "object", - "required": ["faultyResource", "faultyResourceType"], - "properties": { - "faultyResource": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes instance the vimLevelResourceType is the type of resource, as would correspond to the kind field if the resource is declared in its own Kubernetes manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the claimName field in the Kubernetes manifest, or a compound name built by Kubernetes if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the metadata.name field in Kubernetes manifest. \n", - "type": "object", - "required": ["resourceId"], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "faultyResourceType": { - "description": "The enumeration FaultyResourceType represents those types of faulty resource. Acceptable values are: - COMPUTE - Virtual compute resource. - STORAGE - Virtual storage resource. - NETWORK - Virtual network resource.\n", - "type": "string", - "enum": ["COMPUTE", "STORAGE", "NETWORK"] - } - } - }, - "alarmRaisedTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "alarmChangedTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "alarmClearedTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "alarmAcknowledgedTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "ackState": { - "description": "Acknowledgment state of the alarm. Permitted values: UNACKNOWLEDGED ACKNOWLEDGED\n", - "type": "string", - "enum": ["UNACKNOWLEDGED", "ACKNOWLEDGED"] - }, - "perceivedSeverity": { - "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", - "type": "string", - "enum": ["CRITICAL", "MAJOR", "MINOR", "WARNING", "INDETERMINATE", "CLEARED"] - }, - "eventTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "eventType": { - "description": "The enumeration EventType represents those types of events that trigger an alarm. - COMMUNICATIONS_ALARM: An alarm of this type is associated with the procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n- PROCESSING_ERROR_ALARM: An alarm of this type is associated with a software or processing fault (ITU-T Recommendation X.733).\n- ENVIRONMENTAL_ALARM: An alarm of this type is associated with a condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n- QOS_ALARM: An alarm of this type is associated with degradation in the quality of a service (ITU-T Recommendation X.733).\n- EQUIPMENT_ALARM: An alarm of this type is associated with an equipment fault (ITU-T Recommendation X.733).\n", - "type": "string", - "enum": ["COMMUNICATIONS_ALARM", "PROCESSING_ERROR_ALARM", "ENVIRONMENTAL_ALARM", "QOS_ALARM", "EQUIPMENT_ALARM"] - }, - "faultType": { - "description": "Additional information to clarify the type of the fault.\n", - "type": "string" - }, - "probableCause": { - "description": "Information about the probable cause of the fault.\n", - "type": "string" - }, - "isRootCause": { - "description": "Attribute indicating if this fault is the root for other correlated alarms. If TRUE, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", - "type": "boolean" - }, - "correlatedAlarmIds": { - "description": "List of identifiers of other alarms correlated to this fault.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "faultDetails": { - "description": "Provides additional information about the fault..\n", - "type": "array", - "items": { - "type": "string" - } - }, - "_links": { - "description": "Links for this resource.\n", - "type": "object", - "required": ["self"], - "properties": { - "self": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - } - } - } - } + "description": "The alarm data type encapsulates information about an alarm. It shall comply with the provisions defined in Table 8.5.2.4-1\n", + "type": "object", + "required": [ + "id", + "managedObjectId", + "alarmRaisedTime", + "ackState", + "perceivedSeverity", + "eventTime", + "eventType", + "probableCause", + "isRootCause", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "managedObjectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "rootCauseFaultyComponent": { + "description": "This type represents the faulty component that has a negative impact on an NS. It shall comply with the provisions defined in Table 8.5.3.4-1. NOTE:\tAt least one of the attributes shall be present.\n", + "type": "object", + "properties": { + "faultyNestedNsInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "faultyResourceType": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "faultyNsVirtualLinkInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + }, + "rootCauseFaultyResource": { + "description": "This type represents the faulty virtual resources that have a negative impact on a NS.\n", + "type": "object", + "required": [ + "faultyResource", + "faultyResourceType" + ], + "properties": { + "faultyResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + }, + "faultyResourceType": { + "description": "The enumeration FaultyResourceType represents those types of faulty resource. Acceptable values are: - COMPUTE - Virtual compute resource. - STORAGE - Virtual storage resource. - NETWORK - Virtual network resource.\n", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "NETWORK" + ] + } + } + }, + "alarmRaisedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmChangedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmClearedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmAcknowledgedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "ackState": { + "description": "Acknowledgment state of the alarm. Permitted values: UNACKNOWLEDGED ACKNOWLEDGED\n", + "type": "string", + "enum": [ + "UNACKNOWLEDGED", + "ACKNOWLEDGED" + ] + }, + "perceivedSeverity": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + }, + "eventTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "eventType": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. - COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n- PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n- ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n- QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n- EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + }, + "faultType": { + "description": "Additional information to clarify the type of the fault. Valid values applicable to specific Alarms are specified as \"Alarm definition identifier\" values of the Alarm applicable to Os-Ma-nfvo reference point, as defined in clause 7.4 of ETSI GS NFV-IFA 045.\n", + "type": "string" + }, + "probableCause": { + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Os-Ma-nfvo reference point, as defined in clause 7.4 of ETSI GS NFV-IFA 045.\n", + "type": "string" + }, + "isRootCause": { + "description": "Attribute indicating if this fault is the root for other correlated alarms. If TRUE, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", + "type": "boolean" + }, + "correlatedAlarmIds": { + "description": "List of identifiers of other alarms correlated to this fault.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "faultDetails": { + "description": "Provides additional information about the fault. Valid values applicable to specific Alarms are specified as \"Fault details\" values of the Alarm applicable to Os-Ma-nfvo reference point, as defined in clause 7.4 of ETSI GS NFV-IFA 045.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } + } + } } \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/schemas/alarmNotification.schema.json b/SOL005/NSFaultManagement-API/schemas/alarmNotification.schema.json index 82358b6d..5dddc05e 100644 --- a/SOL005/NSFaultManagement-API/schemas/alarmNotification.schema.json +++ b/SOL005/NSFaultManagement-API/schemas/alarmNotification.schema.json @@ -1,257 +1,273 @@ { - "description": "This type represents an alarm notification about NS faults.\n", + "description": "This type represents an alarm notification about NS faults. It shall comply with the provisions defined in Table 8.5.2.5-1. This notification shall be triggered by the NFVO when: • An alarm has been created. • An alarm has been updated, e.g. the severity of the alarm has changed.\n", "type": "object", "required": [ - "id", - "notificationType", - "subscriptionId", - "timeStamp", - "alarm", - "_links" + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "alarm", + "_links" ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "notificationType": { - "description": "Discriminator for the different notification types. Shall be set to \"AlarmNotification\" for this notification type.\n", - "type": "string", - "enum": [ - "AlarmClearedNotification" - ] - }, - "subscriptionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "timeStamp": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "alarm": { - "description": "The alarm data type encapsulates information about an alarm. It shall comply with the provisions defined in Table 8.5.2.4-1\n", - "type": "object", - "required": [ - "id", - "managedObjectId", - "alarmRaisedTime", - "rootCauseFaultyComponent", - "ackState", - "perceivedSeverity", - "eventTime", - "eventType", - "probableCause", - "isRootCause", - "_links" - ], - "properties": { - "id": { + "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "managedObjectId": { + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"AlarmNotification\" for this notification type.\n", + "type": "string", + "enum": [ + "AlarmClearedNotification" + ] + }, + "subscriptionId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "rootCauseFaultyComponent": { - "description": "This type represents the faulty component that has a negative impact on an NS. It shall comply with the provisions defined in Table 8.5.3.4-1.\n", - "type": "object", - "properties": { - "faultyNestedNsInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "faultyResourceType": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "faultyNsVirtualLinkInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - }, - "rootCauseFaultyResource": { - "description": "This type represents the faulty virtual resources that have a negative impact on a NS.\n", + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarm": { + "description": "The alarm data type encapsulates information about an alarm. It shall comply with the provisions defined in Table 8.5.2.4-1\n", "type": "object", "required": [ - "faultyResource", - "faultyResourceType" + "id", + "managedObjectId", + "alarmRaisedTime", + "ackState", + "perceivedSeverity", + "eventTime", + "eventType", + "probableCause", + "isRootCause", + "_links" ], "properties": { - "faultyResource": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n", - "type": "object", - "required": [ - "resourceId" - ], - "properties": { - "vimId": { + "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "resourceProviderId": { + }, + "managedObjectId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + }, + "rootCauseFaultyComponent": { + "description": "This type represents the faulty component that has a negative impact on an NS. It shall comply with the provisions defined in Table 8.5.3.4-1. NOTE:\tAt least one of the attributes shall be present.\n", + "type": "object", + "properties": { + "faultyNestedNsInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "faultyResourceType": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "faultyNsVirtualLinkInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + }, + "rootCauseFaultyResource": { + "description": "This type represents the faulty virtual resources that have a negative impact on a NS.\n", + "type": "object", + "required": [ + "faultyResource", + "faultyResourceType" + ], + "properties": { + "faultyResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + }, + "faultyResourceType": { + "description": "The enumeration FaultyResourceType represents those types of faulty resource. Acceptable values are: - COMPUTE - Virtual compute resource. - STORAGE - Virtual storage resource. - NETWORK - Virtual network resource.\n", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "NETWORK" + ] + } + } + }, + "alarmRaisedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmChangedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmClearedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmAcknowledgedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "ackState": { + "description": "Acknowledgment state of the alarm. Permitted values: UNACKNOWLEDGED ACKNOWLEDGED\n", + "type": "string", + "enum": [ + "UNACKNOWLEDGED", + "ACKNOWLEDGED" + ] + }, + "perceivedSeverity": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + }, + "eventTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "eventType": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. - COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n- PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n- ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n- QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n- EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + }, + "faultType": { + "description": "Additional information to clarify the type of the fault. Valid values applicable to specific Alarms are specified as \"Alarm definition identifier\" values of the Alarm applicable to Os-Ma-nfvo reference point, as defined in clause 7.4 of ETSI GS NFV-IFA 045.\n", "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n", + }, + "probableCause": { + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Os-Ma-nfvo reference point, as defined in clause 7.4 of ETSI GS NFV-IFA 045.\n", "type": "string" - } + }, + "isRootCause": { + "description": "Attribute indicating if this fault is the root for other correlated alarms. If TRUE, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", + "type": "boolean" + }, + "correlatedAlarmIds": { + "description": "List of identifiers of other alarms correlated to this fault.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "faultDetails": { + "description": "Provides additional information about the fault. Valid values applicable to specific Alarms are specified as \"Fault details\" values of the Alarm applicable to Os-Ma-nfvo reference point, as defined in clause 7.4 of ETSI GS NFV-IFA 045.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } } - }, - "faultyResourceType": { - "description": "The enumeration FaultyResourceType represents those types of faulty resource. Acceptable values are: - COMPUTE - Virtual compute resource. - STORAGE - Virtual storage resource. - NETWORK - Virtual network resource.\n", - "type": "string", - "enum": [ - "COMPUTE", - "STORAGE", - "NETWORK" - ] - } - } - }, - "alarmRaisedTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "alarmChangedTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "alarmClearedTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "ackState": { - "description": "Acknowledgment state of the alarm. Permitted values: UNACKNOWLEDGED ACKNOWLEDGED\n", - "type": "string", - "enum": [ - "UNACKNOWLEDGED", - "ACKNOWLEDGED" - ] - }, - "perceivedSeverity": { - "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "INDETERMINATE", - "CLEARED" - ] - }, - "eventTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "eventType": { - "description": "The enumeration EventType represents those types of events that trigger an alarm. - COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n- PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n- ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n- QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n- EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", - "type": "string", - "enum": [ - "COMMUNICATIONS_ALARM", - "PROCESSING_ERROR_ALARM", - "ENVIRONMENTAL_ALARM", - "QOS_ALARM", - "EQUIPMENT_ALARM" - ] - }, - "faultType": { - "description": "Additional information to clarify the type of the fault.\n", - "type": "string" - }, - "probableCause": { - "description": "Information about the probable cause of the fault.\n", - "type": "string" - }, - "isRootCause": { - "description": "Attribute indicating if this fault is the root for other correlated alarms. If TRUE, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", - "type": "boolean" - }, - "correlatedAlarmIds": { - "description": "List of identifiers of other alarms correlated to this fault.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" } - }, - "faultDetails": { - "description": "Provides additional information about the fault..\n", - "type": "string" - }, - "_links": { - "description": "Links for this resource.\n", + }, + "_links": { + "description": "Links to resources related to this notification.\n", "type": "object", "required": [ - "self" + "subscription" ], "properties": { - "self": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } } - } - } - } - } - }, - "alarmClearedTime": { - "description": "The time stamp indicating when the alarm was cleared.\n" - }, - "_links": { - "description": "Links to resources related to this notification.\n", - "type": "object", - "required": [ - "subscription", - "alarm" - ], - "properties": { - "subscription": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "alarm": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } } - } } - } } } \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/schemas/alarms.schema.json b/SOL005/NSFaultManagement-API/schemas/alarms.schema.json index 6d4c27e0..06cf8ee5 100644 --- a/SOL005/NSFaultManagement-API/schemas/alarms.schema.json +++ b/SOL005/NSFaultManagement-API/schemas/alarms.schema.json @@ -1,180 +1,219 @@ { - "type": "array", - "items": { - - "description": "The alarm data type encapsulates information about an alarm. It shall comply with the provisions defined in Table 8.5.2.4-1\n", - "type": "object", - "required": ["id", "managedObjectId", "alarmRaisedTime", "ackState", "perceivedSeverity", "eventTime", "eventType", "probableCause", "isRootCause", "_links"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "managedObjectId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "rootCauseFaultyComponent": { - "description": "This type represents the faulty component that has a negative impact on an NS. It shall comply with the provisions defined in Table 8.5.3.4-1. NOTE:\tAt least one of the attributes shall be present.\n", - "type": "object", - "properties": { - "faultyNestedNsInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "faultyResourceType": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "faultyNsVirtualLinkInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - }, - "rootCauseFaultyResource": { - "description": "This type represents the faulty virtual resources that have a negative impact on a NS.\n", - "type": "object", - "required": ["faultyResource", "faultyResourceType"], - "properties": { - "faultyResource": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes instance the vimLevelResourceType is the type of resource, as would correspond to the kind field if the resource is declared in its own Kubernetes manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the claimName field in the Kubernetes manifest, or a compound name built by Kubernetes if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the metadata.name field in Kubernetes manifest. \n", - "type": "object", - "required": ["resourceId"], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "faultyResourceType": { - "description": "The enumeration FaultyResourceType represents those types of faulty resource. Acceptable values are: - COMPUTE - Virtual compute resource. - STORAGE - Virtual storage resource. - NETWORK - Virtual network resource.\n", - "type": "string", - "enum": ["COMPUTE", "STORAGE", "NETWORK"] - } - } - }, - "alarmRaisedTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "alarmChangedTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "alarmClearedTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "alarmAcknowledgedTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "ackState": { - "description": "Acknowledgment state of the alarm. Permitted values: UNACKNOWLEDGED ACKNOWLEDGED\n", - "type": "string", - "enum": ["UNACKNOWLEDGED", "ACKNOWLEDGED"] - }, - "perceivedSeverity": { - "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", - "type": "string", - "enum": ["CRITICAL", "MAJOR", "MINOR", "WARNING", "INDETERMINATE", "CLEARED"] - }, - "eventTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "eventType": { - "description": "The enumeration EventType represents those types of events that trigger an alarm. - COMMUNICATIONS_ALARM: An alarm of this type is associated with the procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n- PROCESSING_ERROR_ALARM: An alarm of this type is associated with a software or processing fault (ITU-T Recommendation X.733).\n- ENVIRONMENTAL_ALARM: An alarm of this type is associated with a condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n- QOS_ALARM: An alarm of this type is associated with degradation in the quality of a service (ITU-T Recommendation X.733).\n- EQUIPMENT_ALARM: An alarm of this type is associated with an equipment fault (ITU-T Recommendation X.733).\n", - "type": "string", - "enum": ["COMMUNICATIONS_ALARM", "PROCESSING_ERROR_ALARM", "ENVIRONMENTAL_ALARM", "QOS_ALARM", "EQUIPMENT_ALARM"] - }, - "faultType": { - "description": "Additional information to clarify the type of the fault.\n", - "type": "string" - }, - "probableCause": { - "description": "Information about the probable cause of the fault.\n", - "type": "string" - }, - "isRootCause": { - "description": "Attribute indicating if this fault is the root for other correlated alarms. If TRUE, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", - "type": "boolean" - }, - "correlatedAlarmIds": { - "description": "List of identifiers of other alarms correlated to this fault.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "faultDetails": { - "description": "Provides additional information about the fault..\n", - "type": "array", - "items": { - "type": "string" - } - }, - "_links": { - "description": "Links for this resource.\n", - "type": "object", - "required": ["self"], - "properties": { - "self": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - } - } - } - } - } + "type": "array", + "items": { + "description": "The alarm data type encapsulates information about an alarm. It shall comply with the provisions defined in Table 8.5.2.4-1\n", + "type": "object", + "required": [ + "id", + "managedObjectId", + "alarmRaisedTime", + "ackState", + "perceivedSeverity", + "eventTime", + "eventType", + "probableCause", + "isRootCause", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "managedObjectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "rootCauseFaultyComponent": { + "description": "This type represents the faulty component that has a negative impact on an NS. It shall comply with the provisions defined in Table 8.5.3.4-1. NOTE:\tAt least one of the attributes shall be present.\n", + "type": "object", + "properties": { + "faultyNestedNsInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "faultyResourceType": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "faultyNsVirtualLinkInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + }, + "rootCauseFaultyResource": { + "description": "This type represents the faulty virtual resources that have a negative impact on a NS.\n", + "type": "object", + "required": [ + "faultyResource", + "faultyResourceType" + ], + "properties": { + "faultyResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + }, + "faultyResourceType": { + "description": "The enumeration FaultyResourceType represents those types of faulty resource. Acceptable values are: - COMPUTE - Virtual compute resource. - STORAGE - Virtual storage resource. - NETWORK - Virtual network resource.\n", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "NETWORK" + ] + } + } + }, + "alarmRaisedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmChangedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmClearedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "alarmAcknowledgedTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "ackState": { + "description": "Acknowledgment state of the alarm. Permitted values: UNACKNOWLEDGED ACKNOWLEDGED\n", + "type": "string", + "enum": [ + "UNACKNOWLEDGED", + "ACKNOWLEDGED" + ] + }, + "perceivedSeverity": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + }, + "eventTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "eventType": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. - COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n- PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n- ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n- QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n- EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + }, + "faultType": { + "description": "Additional information to clarify the type of the fault. Valid values applicable to specific Alarms are specified as \"Alarm definition identifier\" values of the Alarm applicable to Os-Ma-nfvo reference point, as defined in clause 7.4 of ETSI GS NFV-IFA 045.\n", + "type": "string" + }, + "probableCause": { + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Os-Ma-nfvo reference point, as defined in clause 7.4 of ETSI GS NFV-IFA 045.\n", + "type": "string" + }, + "isRootCause": { + "description": "Attribute indicating if this fault is the root for other correlated alarms. If TRUE, then the alarms listed in the attribute CorrelatedAlarmId are caused by this fault.\n", + "type": "boolean" + }, + "correlatedAlarmIds": { + "description": "List of identifiers of other alarms correlated to this fault.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "faultDetails": { + "description": "Provides additional information about the fault. Valid values applicable to specific Alarms are specified as \"Fault details\" values of the Alarm applicable to Os-Ma-nfvo reference point, as defined in clause 7.4 of ETSI GS NFV-IFA 045.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } + } + } + } } \ No newline at end of file -- GitLab From 8234a68b25553cb4b956251f4cc20fecd93e265c Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Tue, 7 Jan 2025 12:17:32 +0100 Subject: [PATCH 119/141] updated FmSubscription and FmSubscriptions schemas as per NFVSOL(24)000122 --- .../schemas/FmSubscription.schema.json | 356 ++++++++++------- .../schemas/FmSubscriptions.schema.json | 378 +++++++++++------- 2 files changed, 449 insertions(+), 285 deletions(-) diff --git a/SOL005/NSFaultManagement-API/schemas/FmSubscription.schema.json b/SOL005/NSFaultManagement-API/schemas/FmSubscription.schema.json index d17abe71..a5f3ae8b 100644 --- a/SOL005/NSFaultManagement-API/schemas/FmSubscription.schema.json +++ b/SOL005/NSFaultManagement-API/schemas/FmSubscription.schema.json @@ -2,157 +2,239 @@ "description": "This type represents a subscription related to notifications about VNF faults.\n", "type": "object", "required": [ - "id", - "callbackUri", - "_links" + "id", + "callbackUri", + "_links" ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "filter": { - "description": "This type represents a subscription filter related to notifications about NS faults. 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)..\n", - "type": "object", - "properties": { - "nsInstanceSubscriptionFilter": { - "description": "This type represents subscription filter criteria to match NS instances.\nNOTE 1: The attributes \"nsdIds\", \"vnfdIds\" and \"pnfdIds\" are alternatives to reference to NS instances that are created based on certain NSDs, or contain VNF instances that are based on certain VNFDs, or contain PNFs that are based on certain PNFDs in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\nNOTE 2: The attributes \"nsInstanceIds\" and \"nsInstanceNames\" are alternatives to reference to particular NS Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "filter": { + "description": "This type represents a subscription filter related to notifications about NS faults. 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:\tThe permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification types to facilitate automated code generation systems.\n", "type": "object", "properties": { - "nsdIds": { - "description": "If present, match NS instances that were created based on a NSD identified by one of the nsdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "nsInstanceSubscriptionFilter": { + "description": "This type represents subscription filter criteria to match NS instances.\nNOTE 1: The attributes \"nsdIds\", \"vnfdIds\" and \"pnfdIds\" are alternatives to reference to NS instances that are created based on certain NSDs, or contain VNF instances that are based on certain VNFDs, or contain PNFs that are based on certain PNFDs in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\nNOTE 2: The attributes \"nsInstanceIds\" and \"nsInstanceNames\" are alternatives to reference to particular NS Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", + "type": "object", + "anyOf": [ + { + "oneOf": [ + { + "required": [ + "nsdIds" + ] + }, + { + "required": [ + "vnfdIds" + ] + }, + { + "required": [ + "pnfdIds" + ] + } + ] + }, + { + "oneOf": [ + { + "required": [ + "nsInstanceIds" + ] + }, + { + "required": [ + "nsInstanceNames" + ] + } + ] + } + ], + "properties": { + "nsdIds": { + "description": "If present, match NS instances that were created based on a NSD identified by one of the nsdId values listed in this attribute. See note 1.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "vnfdIds": { + "description": "If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. See note 1.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "pnfdIds": { + "description": "If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute. See note 1.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "nsInstanceIds": { + "description": "If present, match NS instances with an instance identifier listed in this attribute. See note 2.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "nsInstanceNames": { + "description": "If present, match NS instances with a NS Instance Name listed in this attribute. See note 2.\n", + "type": "array", + "items": { + "description": "A string as defined in IETF RFC 8259.\n", + "type": "string" + } + } + } + }, + "notificationTypes": { + "description": "Match particular notification types. Permitted values: - AlarmNotification - AlarmClearedNotification - AlarmListRebuiltNotification. See note.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "faultyResourceTypes": { + "description": "Match alarms related to NSs with a faulty resource type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration FaultyResourceType represents those types of faulty resource. Acceptable values are: - COMPUTE - Virtual compute resource. - STORAGE - Virtual storage resource. - NETWORK - Virtual network resource.\n", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "NETWORK" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms related to NSs with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. - COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n- PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n- ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n- QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n- EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } } - }, - "vnfdIds": { - "description": "If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "pnfdIds": { - "description": "If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "nsInstanceIds": { - "description": "If present, match NS instances with an instance identifier listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "nsInstanceNames": { - "description": "If present, match NS instances with a NS Instance Name listed in this attribute.\n", - "type": "array", - "items": { - "description": "A string as defined in IETF RFC 8259.\n", - "type": "string" - } - } - } - }, - "notificationTypes": { - "description": "Match particular notification types. Permitted values: - AlarmNotification - AlarmClearedNotification - AlarmListRebuiltNotification.\n", - "type": "array", - "items": { - "type": "string", - "enum": [ - "AlarmNotification", - "AlarmClearedNotification", - "AlarmListRebuiltNotification" - ] - } - }, - "faultyResourceTypes": { - "description": "Match alarms related to NSs with a faulty resource type listed in this attribute.\n", - "type": "array", - "items": { - "description": "The enumeration FaultyResourceType represents those types of faulty resource. Acceptable values are: - COMPUTE - Virtual compute resource. - STORAGE - Virtual storage resource. - NETWORK - Virtual network resource.\n", - "type": "string", - "enum": [ - "COMPUTE", - "STORAGE", - "NETWORK" - ] } - }, - "perceivedSeverities": { - "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + }, + "fmConnection": { + "description": "An access information and interface information to monitor the FM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", "type": "array", "items": { - "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "INDETERMINATE", - "CLEARED" - ] - } - }, - "eventTypes": { - "description": "Match VNF alarms related to NSs with an event type listed in this attribute.\n", - "type": "array", - "items": { - "description": "The enumeration EventType represents those types of events that trigger an alarm. - COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n- PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n- ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n- QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n- EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", - "type": "string", - "enum": [ - "COMMUNICATIONS_ALARM", - "PROCESSING_ERROR_ALARM", - "ENVIRONMENTAL_ALARM", - "QOS_ALARM", - "EQUIPMENT_ALARM" - ] - } - }, - "probableCauses": { - "description": "Match VNF alarms with a probable cause listed in this attribute.\n", - "type": "array", - "items": { - "type": "string" + "description": "This type represents a MonitoringConnection.\nNOTE: The VNFM can be made aware of monitoring connection information, including their identifiers to be used by configuration means outside the scope of the present document (e.g. using relevant NFV-MANO management APIs as defined in ETSI GS NFV-SOL 009). \n", + "type": "object", + "required": [ + "id", + "monitoringType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way. VALUES: • VIM_CISM • EXTERNAL • PAAS\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "extra": { + "description": "Type specific additional information, if applicable.\n", + "type": "string" + } + } } - } - } - }, - "callbackUri": { - "description": "The URI of the endpoint to send the notification to.\n", - "type": "string", - "format": "url" - }, - "_links": { - "description": "Links for this resource.\n", - "type": "object", - "required": [ - "self" - ], - "properties": { - "self": { - "description": "This type represents a link to a resource.\n", + }, + "_links": { + "description": "Links for this resource.\n", "type": "object", "required": [ - "href" + "self" ], "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } + "self": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } } - } } - } } } \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/schemas/FmSubscriptions.schema.json b/SOL005/NSFaultManagement-API/schemas/FmSubscriptions.schema.json index 46b130a9..344afa0e 100644 --- a/SOL005/NSFaultManagement-API/schemas/FmSubscriptions.schema.json +++ b/SOL005/NSFaultManagement-API/schemas/FmSubscriptions.schema.json @@ -1,161 +1,243 @@ { "type": "array", "item": { - "description": "This type represents a subscription related to notifications about VNF faults.\n", - "type": "object", - "required": [ - "id", - "callbackUri", - "_links" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "filter": { - "description": "This type represents a subscription filter related to notifications about NS faults. 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)..\n", - "type": "object", - "properties": { - "nsInstanceSubscriptionFilter": { - "description": "This type represents subscription filter criteria to match NS instances.\nNOTE 1: The attributes \"nsdIds\", \"vnfdIds\" and \"pnfdIds\" are alternatives to reference to NS instances that are created based on certain NSDs, or contain VNF instances that are based on certain VNFDs, or contain PNFs that are based on certain PNFDs in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\nNOTE 2: The attributes \"nsInstanceIds\" and \"nsInstanceNames\" are alternatives to reference to particular NS Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", - "type": "object", - "properties": { - "nsdIds": { - "description": "If present, match NS instances that were created based on a NSD identified by one of the nsdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "vnfdIds": { - "description": "If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "pnfdIds": { - "description": "If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "nsInstanceIds": { - "description": "If present, match NS instances with an instance identifier listed in this attribute.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "nsInstanceNames": { - "description": "If present, match NS instances with a NS Instance Name listed in this attribute.\n", - "type": "array", - "items": { - "description": "A string as defined in IETF RFC 8259.\n", - "type": "string" - } - } - } - }, - "notificationTypes": { - "description": "Match particular notification types. Permitted values: - AlarmNotification - AlarmClearedNotification - AlarmListRebuiltNotification.\n", - "type": "array", - "items": { - "type": "string", - "enum": [ - "AlarmNotification", - "AlarmClearedNotification", - "AlarmListRebuiltNotification" - ] - } + "description": "This type represents a subscription related to notifications about VNF faults.\n", + "type": "object", + "required": [ + "id", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "faultyResourceTypes": { - "description": "Match alarms related to NSs with a faulty resource type listed in this attribute.\n", - "type": "array", - "items": { - "description": "The enumeration FaultyResourceType represents those types of faulty resource. Acceptable values are: - COMPUTE - Virtual compute resource. - STORAGE - Virtual storage resource. - NETWORK - Virtual network resource.\n", - "type": "string", - "enum": [ - "COMPUTE", - "STORAGE", - "NETWORK" - ] - } + "filter": { + "description": "This type represents a subscription filter related to notifications about NS faults. 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:\tThe permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification types to facilitate automated code generation systems.\n", + "type": "object", + "properties": { + "nsInstanceSubscriptionFilter": { + "description": "This type represents subscription filter criteria to match NS instances.\nNOTE 1: The attributes \"nsdIds\", \"vnfdIds\" and \"pnfdIds\" are alternatives to reference to NS instances that are created based on certain NSDs, or contain VNF instances that are based on certain VNFDs, or contain PNFs that are based on certain PNFDs in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\nNOTE 2: The attributes \"nsInstanceIds\" and \"nsInstanceNames\" are alternatives to reference to particular NS Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", + "type": "object", + "anyOf": [ + { + "oneOf": [ + { + "required": [ + "nsdIds" + ] + }, + { + "required": [ + "vnfdIds" + ] + }, + { + "required": [ + "pnfdIds" + ] + } + ] + }, + { + "oneOf": [ + { + "required": [ + "nsInstanceIds" + ] + }, + { + "required": [ + "nsInstanceNames" + ] + } + ] + } + ], + "properties": { + "nsdIds": { + "description": "If present, match NS instances that were created based on a NSD identified by one of the nsdId values listed in this attribute. See note 1.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "vnfdIds": { + "description": "If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. See note 1.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "pnfdIds": { + "description": "If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute. See note 1.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "nsInstanceIds": { + "description": "If present, match NS instances with an instance identifier listed in this attribute. See note 2.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "nsInstanceNames": { + "description": "If present, match NS instances with a NS Instance Name listed in this attribute. See note 2.\n", + "type": "array", + "items": { + "description": "A string as defined in IETF RFC 8259.\n", + "type": "string" + } + } + } + }, + "notificationTypes": { + "description": "Match particular notification types. Permitted values: - AlarmNotification - AlarmClearedNotification - AlarmListRebuiltNotification. See note.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "AlarmNotification", + "AlarmClearedNotification", + "AlarmListRebuiltNotification" + ] + } + }, + "faultyResourceTypes": { + "description": "Match alarms related to NSs with a faulty resource type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration FaultyResourceType represents those types of faulty resource. Acceptable values are: - COMPUTE - Virtual compute resource. - STORAGE - Virtual storage resource. - NETWORK - Virtual network resource.\n", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "NETWORK" + ] + } + }, + "perceivedSeverities": { + "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", + "type": "array", + "items": { + "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "CRITICAL", + "MAJOR", + "MINOR", + "WARNING", + "INDETERMINATE", + "CLEARED" + ] + } + }, + "eventTypes": { + "description": "Match VNF alarms related to NSs with an event type listed in this attribute.\n", + "type": "array", + "items": { + "description": "The enumeration EventType represents those types of events that trigger an alarm. - COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n- PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n- ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n- QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n- EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", + "type": "string", + "enum": [ + "COMMUNICATIONS_ALARM", + "PROCESSING_ERROR_ALARM", + "ENVIRONMENTAL_ALARM", + "QOS_ALARM", + "EQUIPMENT_ALARM" + ] + } + }, + "probableCauses": { + "description": "Match VNF alarms with a probable cause listed in this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + } + } }, - "perceivedSeverities": { - "description": "Match VNF alarms with a perceived severity listed in this attribute.\n", - "type": "array", - "items": { - "description": "Indicates the relative level of urgency for operator attention. * CRITICAL: The Critical severity level indicates that a service\n affecting condition has occurred and an immediate corrective action\n is required. Such a severity can be reported, for example, when a\n managed object becomes totally out of service and its capability needs\n to be restored (ITU-T Recommendation X.733).\n* MAJOR: The Major severity level indicates that a service affecting\n condition has developed and an urgent corrective action is required.\n Such a severity can be reported, for example, when there is a severe\n degradation in the capability of the managed object and its full\n capability needs to be restored (ITU-T Recommendation X.733).\n* MINOR: The Minor severity level indicates the existence of a\n non-service affecting fault condition and that corrective action\n should be taken in order to prevent a more serious (for example,\n service affecting) fault. Such a severity can be reported, for\n example, when the detected alarm condition is not currently degrading\n the capacity of the managed object (ITU-T Recommendation X.733).\n* WARNING: The Warning severity level indicates the detection of a\n potential or impending service affecting fault, before any significant\n effects have been felt. Action should be taken to further diagnose (if\n necessary) and correct the problem in order to prevent it from\n becoming a more serious service affecting fault (ITU-T Recommendation\n X.733).\n* INDETERMINATE: The Indeterminate severity level indicates that the\n severity level cannot be determined (ITU-T Recommendation X.733).\n* CLEARED: The Cleared severity level indicates the clearing of one or\n more previously reported alarms. This alarm clears all alarms for this\n managed object that have the same Alarm type, Probable cause and\n Specific problems (if given) (ITU-T Recommendation X.733).\n", + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "INDETERMINATE", - "CLEARED" - ] - } + "format": "uri" }, - "eventTypes": { - "description": "Match VNF alarms related to NSs with an event type listed in this attribute.\n", - "type": "array", - "items": { - "description": "The enumeration EventType represents those types of events that trigger an alarm. - COMMUNICATIONS_ALARM: An alarm of this type is associated with the\n procedure and/or process required conveying information from one point\n to another (ITU-T Recommendation X.733).\n- PROCESSING_ERROR_ALARM: An alarm of this type is associated with a\n software or processing fault (ITU-T Recommendation X.733).\n- ENVIRONMENTAL_ALARM: An alarm of this type is associated with a\n condition related to an enclosure in which the equipment resides\n (ITU-T Recommendation X.733).\n- QOS_ALARM: An alarm of this type is associated with degradation in the\n quality of a service (ITU-T Recommendation X.733).\n- EQUIPMENT_ALARM: An alarm of this type is associated with an equipment\n fault (ITU-T Recommendation X.733).\n", - "type": "string", - "enum": [ - "COMMUNICATIONS_ALARM", - "PROCESSING_ERROR_ALARM", - "ENVIRONMENTAL_ALARM", - "QOS_ALARM", - "EQUIPMENT_ALARM" - ] - } + "fmConnection": { + "description": "An access information and interface information to monitor the FM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "This type represents a MonitoringConnection.\nNOTE: The VNFM can be made aware of monitoring connection information, including their identifiers to be used by configuration means outside the scope of the present document (e.g. using relevant NFV-MANO management APIs as defined in ETSI GS NFV-SOL 009). \n", + "type": "object", + "required": [ + "id", + "monitoringType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way. VALUES: • VIM_CISM • EXTERNAL • PAAS\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "extra": { + "description": "Type specific additional information, if applicable.\n", + "type": "string" + } + } + } }, - "probableCauses": { - "description": "Match VNF alarms with a probable cause listed in this attribute.\n", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "callbackUri": { - "description": "The URI of the endpoint to send the notification to.\n", - "type": "string", - "format": "url" - }, - "_links": { - "description": "Links for this resource.\n", - "type": "object", - "required": [ - "self" - ], - "properties": { - "self": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } } - } } - } } - } } } \ No newline at end of file -- GitLab From 9162989f245e5d93d183cd29c5d80701cae06046 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 18:20:59 +0100 Subject: [PATCH 120/141] updated reference version to 5.1.1 to NS LCM tests --- .../CancelOperationTask.robot | 18 +++++----- .../ContinueOperationTask.robot | 18 +++++----- .../CreateNSInstanceWorkflow.robot | 4 +-- .../DeleteNSInstanceWorkflow.robot | 2 +- .../FailOperationTask.robot | 18 +++++----- .../HealNSTask.robot | 16 ++++----- .../HealNSTaskWorkflow.robot | 2 +- .../IndividualNSInstance.robot | 16 ++++----- .../IndividualNSLCMOccurences.robot | 20 +++++------ .../IndividualSubscription.robot | 14 ++++---- .../IndividualVNFSnapshot.robot | 18 +++++----- .../InstantiateNSTask.robot | 18 +++++----- .../InstantiateNSTaskWorkflow.robot | 2 +- .../NSLCMOccurences.robot | 34 +++++++++--------- .../NotificationEndpoint.robot | 10 +++--- .../Notifications.robot | 12 +++---- .../RetryOperationTask.robot | 18 +++++----- .../RollbackOperationTask.robot | 18 +++++----- .../ScaleNSTask.robot | 16 ++++----- .../ScaleNSTaskWorkflow.robot | 2 +- .../Subscriptions.robot | 36 +++++++++---------- .../TerminateNSTask.robot | 16 ++++----- .../TerminateNSTaskWorkflow.robot | 2 +- .../UpdateNSTask.robot | 18 +++++----- .../UpdateNSTaskWorkflow.robot | 2 +- .../VNFSnapshots.robot | 34 +++++++++--------- .../descriptors/SOL001/NSD/nsd_SOL001.yaml | 2 +- 27 files changed, 193 insertions(+), 193 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot b/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot index 3d518325..53fe62c1 100644 --- a/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot @@ -13,7 +13,7 @@ POST Cancel operation task ... Test title: POST Cancel operation task ... Test objective: The objective is to test that POST method cancel the NS LCM operation ... Pre-conditions: NS instance status equal to STARTING, PROCESSING or ROLLING_BACK - ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status equal to FAILED_TEMP @@ -26,7 +26,7 @@ POST Cancel operation task Not Found ... Test title: POST Cancel operation task Not Found ... Test objective: The objective is to test that POST method fail completing the Cancel NS LCM operation if the resource is not found ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Cancel operation task Conflict ... Test title: POST Cancel operation task Conflict ... Test objective: The objective is to test that POST method fail if a status conflict exist on the NS LCM operation. (i.e. NS instance status not equal to STARTING, PROCESSING or ROLLING_BACK) ... Pre-conditions: NS instance status not equal to STARTING, PROCESSING or ROLLING_BACK - ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Cancel operation task - Method not implemented ... Test title: GET Cancel operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.15.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Cancel operation task - Method not implemented ... Test title: PUT Cancel operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.15.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Cancel operation task - Method not implemented ... Test title: PATCH Cancel operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.15.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Cancel operation task - Method not implemented ... Test title: DELETE Cancel operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.15.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.15.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Cancel operation task with permitted authorization scope ... Test title: POST Cancel operation task with permitted authorization scope ... Test objective: The objective is to test that POST method cancel the NS LCM operation with permitted authorization scope ... Pre-conditions: NS instance status equal to STARTING, PROCESSING or ROLLING_BACK - ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status equal to FAILED_TEMP @@ -113,7 +113,7 @@ POST Cancel operation task with not permitted authorization scope ... Test title: POST Cancel operation task with not permitted authorization scope ... Test objective: The objective is to test that POST method cancel the NS LCM operation fails when using not permitted authorization scope ... Pre-conditions: NS instance status equal to STARTING, PROCESSING or ROLLING_BACK - ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.15.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot b/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot index c5bc0595..dd83de24 100644 --- a/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot @@ -13,7 +13,7 @@ POST Continue operation task ... Test title: POST Continue operation task ... Test objective: The objective is to test that POST method trigger a continue on the LCM operation ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status not equal to FAILED_TEMP @@ -26,7 +26,7 @@ POST Continue operation task Not Found ... Test title: POST Continue operation task Not Found ... Test objective: The objective is to test that POST method cannot perform a continue operation task because the resource is not found ... Pre-conditions: none - ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Continue operation task Conflict ... Test title: POST Continue operation task Conflict ... Test objective: The objective is to test that POST method fail in case of operation status conflict (i.e. NS instance status not equal to FAILED_TEMP ) ... Pre-conditions: NS instance status not equal to FAILED_TEMP - ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Continue operation task - Method not implemented ... Test title: GET Continue operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.13.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.13.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Continue operation task - Method not implemented ... Test title: PUT Continue operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.13.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.13.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Continue operation task - Method not implemented ... Test title: PATCH Continue operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.14.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Continue operation task - Method not implemented ... Test title: DELETE Continue operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.14.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Continue operation task with permitted authorization scope ... Test title: POST Continue operation task with permitted authorization scope ... Test objective: The objective is to test that POST method trigger a continue on the LCM operation with permitted authorization scope ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status not equal to FAILED_TEMP @@ -113,7 +113,7 @@ POST Continue operation task with not permitted authorization scope ... Test title: POST Continue operation task with not permitted authorization scope ... Test objective: The objective is to test that POST method trigger a continue on the LCM operation fails when using not permitted authorization scope ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.13.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot index 3cdae826..4b76c7dc 100644 --- a/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/CreateNSInstanceWorkflow.robot @@ -15,7 +15,7 @@ NS Instance Creation ... Test title: NS Instance Creation ... Test objective: The objective is to test the workflow for Creating a NS instance ... Pre-conditions: none - ... Reference: Clause 6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS resource is in NOT_ISTANTIATED state @@ -32,7 +32,7 @@ NS Instance Creation with DISABLED Network Service Descriptor ... Test title: NS Instance Creation with DISABLED Network Service Descriptor ... Test objective: The objective is to test the workflow for Creating a NS instance with a disabled NSD ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO in disabled operational state. - ... Reference: Clauses 6.4.2.3.1 and 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clauses 6.4.2.3.1 and 5.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot b/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot index bc233abc..5228ca94 100644 --- a/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/DeleteNSInstanceWorkflow.robot @@ -15,7 +15,7 @@ NS Instance Deletion ... Test title: NS Instance Deletion ... Test objective: The objective is to test the workflow for Deleting a NS instance ... Pre-conditions: the resource is in NOT_INSTANTIATED state - ... Reference: Clause 6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS Instance resource is deleted diff --git a/SOL005/NSLifecycleManagement-API/FailOperationTask.robot b/SOL005/NSLifecycleManagement-API/FailOperationTask.robot index 971bb0c8..fcec56ad 100644 --- a/SOL005/NSLifecycleManagement-API/FailOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/FailOperationTask.robot @@ -13,7 +13,7 @@ POST Fail operation task ... Test title: POST Fail operation task ... Test objective: The objective is to test that POST method trigger a state change to "finally failed" on the NS LCM operation ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Fail operation task Not Found ... Test title: POST Fail operation task Not Found ... Test objective: The objective is to test that POST method fail if the NS LCM resource is not found ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Fail operation task Conflict ... Test title: POST Fail operation task Conflict ... Test objective: The objective is to test that POST method fail in case of status conflict on the NS LCM operation (i.e NS instance status not equal to FAILED_TEMP) ... Pre-conditions: NS instance status not equal to FAILED_TEMP - ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Fail operation task - Method not implemented ... Test title: GET Fail operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.14.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Fail operation task - Method not implemented ... Test title: PUT Fail operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.14.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Fail operation task - Method not implemented ... Test title: PATCH Fail operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.14.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Fail operation task - Method not implemented ... Test title: DELETE Fail operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.14.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.14.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Fail operation task with permitted authorization scope ... Test title: POST Fail operation task with permitted authorization scope ... Test objective: The objective is to test that POST method trigger a state change to "finally failed" on the NS LCM operation with permitted authorization scope ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ POST Fail operation task with not ermitted authorization scope ... Test title: POST Fail operation task with not ermitted authorization scope ... Test objective: The objective is to test that POST method trigger a state change to "finally failed" on the NS LCM operation fails when using not permitted authorization scope ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.14.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/HealNSTask.robot b/SOL005/NSLifecycleManagement-API/HealNSTask.robot index 9644f429..90adff40 100644 --- a/SOL005/NSLifecycleManagement-API/HealNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/HealNSTask.robot @@ -13,7 +13,7 @@ POST Heal a NSInstance ... Test title: POST Heal a NSInstance ... Test objective: The objective is to test that POST method trigger a Heal NS instance ... Pre-conditions: NS Instance is in INSTANTIATED state. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance is still in INSTANTIATED state. @@ -26,7 +26,7 @@ POST Heal a NSInstance - Conflict (Not Instantited) ... Test title: POST Heal a NSInstance - Conflict (Not Instantited) ... Test objective: The objective is to test that POST method fail if NS instance is in NOT_INSTANTIATE state ... Pre-conditions: NS Instance is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS Instance is still in NOT_INSTANTIATED state @@ -39,7 +39,7 @@ GET Heal NSInstance- Method not implemented ... Test title: GET Heal NSInstance- Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Heal NSInstance - Method not implemented ... Test title: PUT Heal NSInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Heal NSInstance - Method not implemented ... Test title: PATCH Heal NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Heal NSInstance - Method not implemented ... Test title: DELETE Heal NSInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ POST Heal a NSInstance with permitted authorization scope ... Test title: POST Heal a NSInstance with permitted authorization scope ... Test objective: The objective is to test that POST method trigger a Heal NS instance with permitted authorization scope ... Pre-conditions: NS Instance is in INSTANTIATED state. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance is still in INSTANTIATED state. @@ -100,7 +100,7 @@ POST Heal a NSInstance with not permitted authorization scope ... Test title: POST Heal a NSInstance with not permitted authorization scope ... Test objective: The objective is to test that POST method trigger a Heal NS instance fails when using not permitted authorization scope ... Pre-conditions: NS Instance is in INSTANTIATED state. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance is still in INSTANTIATED state. diff --git a/SOL005/NSLifecycleManagement-API/HealNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/HealNSTaskWorkflow.robot index 365f84e5..24440ad4 100644 --- a/SOL005/NSLifecycleManagement-API/HealNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/HealNSTaskWorkflow.robot @@ -14,7 +14,7 @@ Heal Flow of NS lifecycle management operations ... Test title: Heal Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Healing a NS instance ... Pre-conditions: the resource is in INSTANTIATED state - ... Reference: Clause 6.4.7 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.7 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS Instance still in INSTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot index 07bbcec4..7291a2b6 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot @@ -13,7 +13,7 @@ POST Individual NSInstance - Method not implemented ... Test title: POST Individual NSInstance - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Information about an individual NS Instance ... Test title: GET Information about an individual NS Instance ... Test objective: The objective is to test that GET method returns an individual NS instance ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ PUT Individual NSInstance - Method not implemented ... Test title: PUT Individual NSInstance - Method not implemented ... Test objective: TThe objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PATCH Individual NSInstance - Method not implemented ... Test title: PATCH Individual NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ DELETE Individual NSInstance ... Test title: DELETE Individual NSInstance ... Test objective: The objective is to test that DELETE method delete a not INSTANTIATED NS instance ... Pre-conditions: NS instance is not INSTANTIATED . - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Check Postcondition NS Instance is deleted @@ -77,7 +77,7 @@ DELETE Individual NSInstance Conflict ... Test title: DELETE Individual NSInstance Conflict ... Test objective: The objective is to test that DELETE method cannot delete an INSTANTIATED NS instance ... Pre-conditions: one instance of a NS in INSTANTIATED state - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Check Postcondition NS Instance is not deleted @@ -91,7 +91,7 @@ DELETE Individual NSInstance with permitted authorization scope ... Test title: DELETE Individual NSInstance with permitted authorization scope ... Test objective: The objective is to test that DELETE method delete a not INSTANTIATED NS instance with permitted authorization scope ... Pre-conditions: NS instance is not INSTANTIATED . - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Check Postcondition NS Instance is deleted @@ -104,7 +104,7 @@ DELETE Individual NSInstance with not permitted authorization scope ... Test title: DELETE Individual NSInstance with not permitted authorization scope ... Test objective: The objective is to test that DELETE method fails to delete a not INSTANTIATED NS instance when using a not permitted authorization scope ... Pre-conditions: NS instance is not INSTANTIATED . - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot b/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot index 734c5f8d..95b071aa 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot @@ -12,7 +12,7 @@ Post Individual NS LCM occurrences - Method not implemented ... Test title: Post Individual NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get status information about Individual NS LCM occurrences ... Test title: Get status information about Individual NS LCM occurrences ... Test objective: The objective is to test that GET method returns the LCM occurrence of the NS ... Pre-conditions: none - ... Reference: Clause 6.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT status information about Individual NS LCM occurrences - Method not implemen ... Test title: PUT status information about Individual NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.10.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.10.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH status information about Individual NS LCM occurrences ... Test title: PATCH status information about Individual NS LCM occurrences ... Test objective: The objective is to test that PATCH method modify an existing Individual NS LCM occurrence ... Pre-conditions: An Individual NS LCM occurrence represents a scheduled operation not yet started - ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH status information about Individual NS LCM occurrences - scheduled operati ... Test title: PATCH status information about Individual NS LCM occurrences ... Test objective: The objective is to test that PATCH method modify an existing Individual NS LCM occurrence ... Pre-conditions: An Individual NS LCM occurrence represents a scheduled operation already started - ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH status information about Individual NS LCM occurrences - Precondition fail ... Test title: PATCH status information about Individual NS LCM occurrences - Precondition failed ... Test objective: The objective is to test that PATCH method that modifies an existing Individual NS LCM occurrence fails if the resource was modified by another entity ... Pre-conditions: An Individual NS LCM occurrence represents a scheduled operation not yet started - ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The resource was modified by another entity ... Post-Conditions: none @@ -88,7 +88,7 @@ PATCH status information about Individual NS LCM occurrences - Precondition fail ... Test title: PATCH status information about Individual NS LCM occurrences - Precondition failed HTTP Conditional Request Not Supported ... Test objective: The objective is to test that PATCH method that modifies an existing Individual NS LCM occurrence fails if the API Producer does not support "Last-Modified" and "ETag" HTTP Headers ... Pre-conditions: An Individual NS LCM occurrence represents a scheduled operation not yet started - ... Reference: Clause 6.4.10.3.4, 4.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.10.3.4, 4.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: API Producer does not support "Last-Modified" and "ETag" HTTP Headers ... Post-Conditions: none @@ -101,7 +101,7 @@ DELETE status information about Individual NS LCM occurrences - Method not imple ... Test title: DELETE status information about Individual NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.10.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.10.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ PATCH status information about Individual NS LCM occurrences with permitted auth ... Test title: PATCH status information about Individual NS LCM occurrences with permitted authorization scope ... Test objective: The objective is to test that PATCH method modify an existing Individual NS LCM occurrence with permitted authorization scope ... Pre-conditions: An Individual NS LCM occurrence represents a scheduled operation not yet started - ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -125,7 +125,7 @@ PATCH status information about Individual NS LCM occurrences with not permitted ... Test title: PATCH status information about Individual NS LCM occurrences with not permitted authorization scope ... Test objective: The objective is to test that PATCH method modify an existing Individual NS LCM occurrence fails when using not permitted authorization scope ... Pre-conditions: An Individual NS LCM occurrence represents a scheduled operation not yet started - ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot b/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot index d581fa72..dde1a228 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot @@ -14,7 +14,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.17.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.17.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Information about an individual subscription ... Test title: GET Information about an individual subscription ... Test objective: The objective is to test the retrieval of NS lifecycle management subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: Clause 6.4.17.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.17.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: TThe objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.17.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.17.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.17.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.17.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: At least one lifecycle management subscription is available in the NFVO - ... Reference: Clause 6.4.17.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.17.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS lifecycle management subscription is not available anymore on NFVO @@ -75,7 +75,7 @@ GET Information about an individual subscription with permitted authorization sc ... Test title: GET Information about an individual subscription with permitted authorization scope ... Test objective: The objective is to test the retrieval of NS lifecycle management subscription and perform a JSON schema validation of the returned subscription data structure with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 6.4.17.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.17.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ GET Information about an individual subscription with not permitted authorizatio ... Test title: GET Information about an individual subscription with not permitted authorization scope ... Test objective: The objective is to test the retrieval of NS lifecycle management subscription and perform a JSON schema validation of the returned subscription data structure fails when using not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 6.4.17.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.17.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL005/NSLifecycleManagement-API/IndividualVNFSnapshot.robot index 7c3e8f8d..e8849abf 100644 --- a/SOL005/NSLifecycleManagement-API/IndividualVNFSnapshot.robot +++ b/SOL005/NSLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -7,7 +7,7 @@ POST Individual VNF Snapshot - Method not implemented ... Test title: POST Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.20.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.20.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Information about an individual VNF Snapshot - SUCCESSFUL ... Test title: GET Information about an individual VNF Snapshot - SUCCESSFUL ... Test objective: The objective is to GET information about an individual VNF Snapshot ... Pre-conditions: none - ... Reference: Clause 6.4.20.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.20.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Information about an individual VNF Snapshot - NOT FOUND ... Test title: GET Information about an individual VNF Snapshot - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot fails when using an invalid resource identifier. ... Pre-conditions: none - ... Reference: Clause 6.4.20.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.20.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ PUT Individual VNF Snapshot - Method not implemented ... Test title: PUT Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.20.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.20.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -57,7 +57,7 @@ PATCH Individual VNF Snapshot - Method not implemented ... Test title: PATCH Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.20.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.20.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot not modified @@ -69,7 +69,7 @@ DELETE Individual VNF Snapshot ... Test title: DELETE Individual VNF Snapshot ... Test objective: The objective is to delete a VNF Snapshot ... Pre-conditions: none - ... Reference: Clause 6.4.20.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.20.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot resource is deleted. @@ -82,7 +82,7 @@ DELETE Individual VNF Snapshot - Conflict ... Test title: DELETE Individual VNF Snapshot Conflict ... Test objective: The objective is to verify that The operation cannot be executed currently, due to a conflict with the state of the VNF Snapshot resource. ... Pre-conditions: none - ... Reference: Clause 6.4.20.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.20.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: VNF snapshot is in use by some operation such as reverting a VNF instance to a VNF snapshot or creating a VNF snapshot package. ... Post-Conditions: VNF Snapshot resource is not deleted. @@ -96,7 +96,7 @@ GET Information about an individual VNF Snapshot with permitted authorization sc ... Test title: GET Information about an individual VNF Snapshot with permitted authorization scope ... Test objective: The objective is to GET information about an individual VNF Snapshot with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 6.4.20.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.20.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ GET Information about an individual VNF Snapshot with not permitted authorizatio ... Test title: GET Information about an individual VNF Snapshot with permitted authorization scope ... Test objective: The objective is to test that GET information about an individual VNF Snapshot fails when using not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 6.4.20.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.20.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot b/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot index 45baf0a9..ae3a6c63 100644 --- a/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot @@ -13,7 +13,7 @@ POST Instantiate a nsInstance ... Test title: POST Instantiate a nsInstance ... Test objective: The objective is to test that POST method instantiate a new NS instance ... Pre-conditions: An NS instance created and it is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Instantiate a nsInstance with feasibility check only ... Test title: POST Instantiate a nsInstance with feasibility check ... Test objective: The objective is to test that POST method instantiate a new NS instance with feasibility check only ... Pre-conditions: An NS instance created and it is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ POST Instantiate a nsInstance Conflict ... Test title: POST Instantiate a nsInstance Conflict ... Test objective: The objective is to test that the operation cannot be performed due to a conflict with the state of resource (i.e. the resource is in INSTANTIATED state) ... Pre-conditions: resource is in INSTANTIATED state - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not instantiated on the NFVO @@ -54,7 +54,7 @@ GET Instantiate NSInstance - Method not implemented ... Test title: GET Instantiate NSInstance - Method not implemented ... Test objective: The objective is to test that the operation cannot be performed due because method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none. @@ -66,7 +66,7 @@ PUT Instantiate NSInstance - Method not implemented ... Test title: PUT Instantiate NSInstance - Method not implemented ... Test objective: The objective is to test that the operation cannot be performed due because method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none. @@ -78,7 +78,7 @@ PATCH Instantiate NSInstance - Method not implemented ... Test title: PATCH Instantiate NSInstance - Method not implemented ... Test objective: The objective is to test that the operation cannot be performed due because method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none. @@ -90,7 +90,7 @@ DELETE Instantiate NSInstance - Method not implemented ... Test title: DELETE Instantiate NSInstance - Method not implemented ... Test objective: The objective is to test that the operation cannot be performed due because method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none. @@ -102,7 +102,7 @@ POST Instantiate a nsInstance with permitted authorization scope ... Test title: POST Instantiate a nsInstance with permitted authorization scope ... Test objective: The objective is to test that POST method instantiate a new NS instance with permitted authorization scope ... Pre-conditions: An NS instance created and it is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ POST Instantiate a nsInstance with not permitted authorization scope ... Test title: POST Instantiate a nsInstance with not permitted authorization scope ... Test objective: The objective is to test that POST method instantiate a new NS instance fails when using not permitted authorization scope ... Pre-conditions: An NS instance created and it is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/InstantiateNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/InstantiateNSTaskWorkflow.robot index db1aa88f..dd44df7e 100644 --- a/SOL005/NSLifecycleManagement-API/InstantiateNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/InstantiateNSTaskWorkflow.robot @@ -14,7 +14,7 @@ Instantiate Flow of NS lifecycle management operations ... Test title: Instantiate Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Instantiate a NS instance ... Pre-conditions: the resource is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: the resource is in INSTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot b/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot index f00db388..5ab4dadb 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot @@ -12,7 +12,7 @@ POST NS LCM occurrences - Method not implemented ... Test title: POST NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ GET status information about multiple NS LCM occurrences ... Test title: GET status information about multiple NS LCM occurrences ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ GET status information about multiple NS LCM occurrences Bad Request Invalid att ... Test title: GET status information about multiple NS LCM occurrences Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to test that GET method fail because of wrong query parameter ... Pre-conditions: At least one LCM occurrences available in the NFVO, Invalid filter parameter - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ GET status information about multiple NS LCM occurrences Bad Request Invalid att ... Test title: GET status information about multiple NS LCM occurrences Bad Request Invalid attribute selector ... Test objective: The objective is to test that GET method fail because of wrong attributes selector ... Pre-conditions: At least one LCM occurrences available in the NFVO, Invalid attribute selector - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ GET status information about multiple NS LCM occurrences with "all_fields" ... Test title: GET status information about multiple NS LCM occurrences with "all_fields" ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ GET status information about multiple NS LCM occurrences with "exclude_default" ... Test title: GET status information about multiple NS LCM occurrences with "exclude_default" ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ GET status information about multiple NS LCM occurrences with "fields" ... Test title: GET status information about multiple NS LCM occurrences with "fields" ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ GET status information about multiple NS LCM occurrences with "exclude_fields" ... Test title: GET status information about multiple NS LCM occurrences with "exclude_fields" ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ PUT status information about multiple NS LCM occurrences - Method not implemente ... Test title: PUT status information about multiple NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ PATCH status information about multiple NS LCM occurrences - Method not implemen ... Test title: PATCH status information about multiple NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -139,7 +139,7 @@ DELETE status information about multiple NS LCM occurrences - Method not impleme ... Test title: DELETE status information about multiple NS LCM occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ GET status information about multiple NS LCM occurrences as Paged Response ... Test title: GET status information about multiple NS LCM occurrences as Paged Reponse ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS as paged response. ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ GET status information about multiple NS LCM occurrences - Bad Request Response ... Test title: GET status information about multiple NS LCM occurrences - Bad Request Response too Big ... Test objective: The objective is to test that GET method fail because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one LCM occurrences available in the NFVO, Invalid filter parameter - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -177,7 +177,7 @@ GET status information about multiple NS LCM occurrences with "fields" and "excl ... Test title: GET status information about multiple NS LCM occurrences with "fields" and "exclude_default" ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -190,7 +190,7 @@ GET status information about multiple NS LCM occurrences - Filter ... Test title: GET status information about multiple NS LCM occurrences - Filter ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS using filtering-based query parameters ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -203,7 +203,7 @@ GET status information about multiple NS LCM occurrences with permitted authoriz ... Test title: GET status information about multiple NS LCM occurrences with permitted authorization scope ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS with permitted authorization scope ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -216,7 +216,7 @@ GET status information about multiple NS LCM occurrences with not permitted auth ... Test title: GET status information about multiple NS LCM occurrences with not permitted authorization scope ... Test objective: The objective is to test that GET method returns a list of LCM occurrences of the NS with permitted authorization scope ... Pre-conditions: At least one LCM occurrences available in the NFVO - ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot b/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot index ca3a8657..d76375ed 100644 --- a/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot @@ -15,7 +15,7 @@ Ns Lcm Operation Occurrence Notification ... Test title: Ns Lcm Operation Occurrence Notification ... Test objective: The objective is to test that Ns Lcm Operation Occurrence Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for NS LCM Operation Occurrence notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ Ns Identifier Creation Notification ... Test title: Ns Identifier Creation Notification ... Test objective: The objective is to test that Ns Identifier Creation Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for Ns Identifier Creation notification is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Ns Identifier Deletion Notification ... Test title: Ns Identifier Deletion Notification ... Test objective: The objective is to test that Ns Identifier Deletion Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for Ns Identifier Deletion notification is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ Ns Change Notification ... Test title: Ns Change Notification ... Test objective: The objective is to test that Ns Change Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for Ns Change notification is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ Ns LCM Capacity Shortage Notification ... Test title: Ns LCM Capacity Shortage Notification ... Test objective: The objective is to test that Ns LCM Capacity Shortage Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for Ns LCM Capacity Shortage notification is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/Notifications.robot b/SOL005/NSLifecycleManagement-API/Notifications.robot index 6b8f95c9..8fdc2461 100644 --- a/SOL005/NSLifecycleManagement-API/Notifications.robot +++ b/SOL005/NSLifecycleManagement-API/Notifications.robot @@ -13,7 +13,7 @@ NS LCM Operation Occurrence Start Notification ... Test title: NS LCM Operation Occurrence Start Notification ... Test objective: The objective is to test the dispatch of NS LCM Operation Occurrence Start Notification when a new NS LCM operation is started in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for NS LCM Operation Occurrence notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ NS LCM Operation Occurrence Result Notification ... Test title: NS LCM Operation Occurrence Result Notification ... Test objective: The objective is to test the dispatch of NS LCM Operation Occurrence Result Notification when a NS LCM operation is completed in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: An NS LCM operation is in progress, and a subscription for NS LCM Operation Occurrence notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ NS Identifier Creation Notification ... Test title: NS Identifier Creation Notification ... Test objective: The objective is to test the dispatch of NS Identifier Creation Notification when a new NS instance resource is created in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for NS identifier creation notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ NS Identifier Deletion Notification ... Test title: NS Identifier Deletion Notification ... Test objective: The objective is to test the dispatch of NS Identifier Deletion Notification when a NS instance resource is deleted in the NFVO, and perform a JSON schema and content validation of the delivered notification.The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS instance resource is created, and a subscription for NS identifier deletion notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ NS Change Notification ... Test title: NS Change Notification ... Test objective: The objective is to test the dispatch of NS Change Notification when a NS instance component is affected by an LCM operation occurrence, and perform a JSON schema and content validation of the delivered notification.The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS instance resource is created, and a subscription for NS change notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ NS LCM Capacity Shortage Notification ... Test title: NS LCM Capacity Shortage Notification ... Test objective: The objective is to test the dispatch of NS LCM Capacity Shortage Notification when a resource shortage occurs during the execution of an NS LCM operation, and perform a JSON schema and content validation of the delivered notification.The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS instance resource is created, and a subscription for NS LCM Capacity Shortage notifications is available in the NFVO. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot b/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot index 9ca9e462..16a64d21 100644 --- a/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot @@ -13,7 +13,7 @@ Post Retry operation task ... Test title: Post Retry operation task ... Test objective: The objective is to test that POST method trigger a retry of NS lifecycle operation in case of temporary failure ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status not equal to FAILED_TEMP @@ -27,7 +27,7 @@ Post Retry operation task Not Found ... Test title: Post Retry operation task Not Found ... Test objective: The objective is to test that POST method fail in case of NS lifecycle operation not found ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ Post Retry operation task Conflict ... Test title: Post Retry operation task Conflict ... Test objective: The objective is to test that POST method fail in case of NS lifecycle operation status conflict (i.e. NS instance status not equal to FAILED_TEMP) ... Pre-conditions: NS instance status not equal to FAILED_TEMP - ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Retry operation task - Method not implemented ... Test title: GET Retry operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.11.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Retry operation task - Method not implemented ... Test title: PUT Retry operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.11.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Retry operation task - Method not implemented ... Test title: PATCH Retry operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.11.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Retry operation task - Method not implemented ... Test title: DELETE Retry operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.11.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.11.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ Post Retry operation task with permitted authorization scope ... Test title: Post Retry operation task with permitted authorization scope ... Test objective: The objective is to test that POST method trigger a retry of NS lifecycle operation in case of temporary failure with permitted authorization scope ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status not equal to FAILED_TEMP @@ -115,7 +115,7 @@ Post Retry operation task with not permitted authorization scope ... Test title: Post Retry operation task with not permitted authorization scope ... Test objective: The objective is to test that POST method trigger a retry of NS lifecycle operation in case of temporary failure fails when using not permitted authorization scope ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.11.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot b/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot index 7a738354..a2e9fda9 100644 --- a/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot @@ -13,7 +13,7 @@ POST Rollback operation task ... Test title: POST Rollback operation task ... Test objective: The objective is to test that POST method triggers a rollback on the NS LCM operation ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status not equal to FAILED_TEMP @@ -26,7 +26,7 @@ POST Rollback operation task Not Found ... Test title: POST Rollback operation task Not Found ... Test objective: The objective is to test that POST method fails if NS LCM operation is not found ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Rollback operation task Conflict ... Test title: POST Rollback operation task Conflict ... Test objective: The objective is to test that POST method fail in case of NS LCM operation status conflict (i.e. NS instance status not equal to FAILED_TEMP) ... Pre-conditions: NS instance status not equal to FAILED_TEMP - ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Rollback operation task - Method not implemented ... Test title: GET Rollback operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.12.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Rollback operation task - Method not implemented ... Test title: PUT Rollback operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.12.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Rollback operation task - Method not implemented ... Test title: PATCH Rollback operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.12.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Rollback operation task - Method not implemented ... Test title: DELETE Rollback operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.12.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.12.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Rollback operation task with permitted authorization scope ... Test title: POST Rollback operation task with permitted authorization scope ... Test objective: The objective is to test that POST method triggers a rollback on the NS LCM operation with permitted authorization scope ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance status not equal to FAILED_TEMP @@ -113,7 +113,7 @@ POST Rollback operation task with not permitted authorization scope ... Test title: POST Rollback operation task with not permitted authorization scope ... Test objective: The objective is to test that POST method triggers a rollback on the NS LCM operation fails when using not permitted authorization scope ... Pre-conditions: NS instance status equal to FAILED_TEMP - ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.12.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot b/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot index b863abec..eb7cc1a0 100644 --- a/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot @@ -13,7 +13,7 @@ POST Scale a nsInstance ... Test title: POST Scale a nsInstance ... Test objective: The objective is to test that POST method scales NS instance ... Pre-conditions: NS instance is INSTANTIATED state - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance is INSTANTIATED state and NS has been scaled @@ -27,7 +27,7 @@ POST Scale a nsInstance - Conflict (Not Instantited) ... Test title: POST Scale a nsInstance - Conflict (Not Instantited) ... Test objective: The objective is to test that POST method cannot scale NS instance because of conflict in resource status (i.e. because the resource is in NOT_INSTANTIATED state) ... Pre-conditions: NS instance is in NOT_INSTANTIATED state. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The Scale NS operation is not triggered on the NFVO @@ -40,7 +40,7 @@ GET Scale NSInstance- Method not implemented ... Test title: GET Scale NSInstance- Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Scale NSInstance - Method not implemented ... Test title: PUT Scale NSInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Scale NSInstance - Method not implemented ... Test title: PATCH Scale NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Scale NSInstance - Method not implemented ... Test title: DELETE Scale NSInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ POST Scale a nsInstance with permitted authorization scope ... Test title: POST Scale a nsInstance with permitted authorization scope ... Test objective: The objective is to test that POST method scales NS instance with permitted authorization scope ... Pre-conditions: NS instance is INSTANTIATED state - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance is INSTANTIATED state and NS has been scaled @@ -102,7 +102,7 @@ POST Scale a nsInstance with not permitted authorization scope ... Test title: POST Scale a nsInstance with not permitted authorization scope ... Test objective: The objective is to test that POST method scales NS instance fails when using not permitted authorization scope ... Pre-conditions: NS instance is INSTANTIATED state - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/ScaleNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/ScaleNSTaskWorkflow.robot index d91d7cd0..fcdd5f2f 100644 --- a/SOL005/NSLifecycleManagement-API/ScaleNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/ScaleNSTaskWorkflow.robot @@ -14,7 +14,7 @@ Scale Flow of NS lifecycle management operations ... Test title: Instantiate Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Instantiate a NS instance ... Pre-conditions: the resource is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: the resource is in INSTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/Subscriptions.robot b/SOL005/NSLifecycleManagement-API/Subscriptions.robot index 3125b8a0..3df6ac03 100644 --- a/SOL005/NSLifecycleManagement-API/Subscriptions.robot +++ b/SOL005/NSLifecycleManagement-API/Subscriptions.robot @@ -15,7 +15,7 @@ POST Create a new subscription ... Test title: POST Create a new subscription ... Test objective: The objective is to test that POST method create a subscription ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: subscription is created in the NFVO @@ -29,7 +29,7 @@ POST Create a new Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The objective is to test that POST method create a duplicate subscription ... Pre-conditions: a subscription shall already exist - ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: duplication supported by NFVO ... Post-Conditions: duplicate subscription is created in the NFVO @@ -43,7 +43,7 @@ POST Create a new Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The objective is to test that POST method cannot create a duplicate subscription ... Pre-conditions: a subscription shall already exist - ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: duplication NOT supported by NFVO ... Post-Conditions: duplicate subscription is not created in the NFVO @@ -56,7 +56,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is to test that GET method retrieve the list of existing subscriptions ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ GET Subscription - Filter ... Test title: GET Subscription - Filter ... Test objective: The objective is Get the list of active subscriptions using a filter ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is Get the list of active subscriptions using an invalid filter ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ GET subscriptions with "all_fields" attribute selector ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -108,7 +108,7 @@ GET subscriptions with "exclude_default" attribute selector ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -121,7 +121,7 @@ GET subscriptions with "fields" attribute selector ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -134,7 +134,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: ... Post-Conditions: @@ -147,7 +147,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify a NS lifecycle management subscription ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -159,7 +159,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method cannot modify a NS lifecycle management subscription ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -171,7 +171,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method cannot modify a NS lifecycle management subscription ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -183,7 +183,7 @@ GET Subscriptions as Paged Response ... Test title: GET Subscriptions as Paged Response ... Test objective: The objective is to test that GET method retrieve the list of existing subscriptions as paged response. ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports paged response ... Post-Conditions: none @@ -196,7 +196,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of active subscriptions list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support paged response ... Post-Conditions: none @@ -209,7 +209,7 @@ POST Create a new subscription - Unprocessable Content ... Test title: POST Create a new subscription - Unprocessable Content ... Test objective: The objective is to test the creation of a new lifecycle management subscription fials when 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 ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -221,7 +221,7 @@ GET Subscriptions with permitted authorization scope ... Test title: GET Subscriptions with permitted authorization scope ... Test objective: The objective is to test that GET method retrieve the list of existing subscriptions with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -234,7 +234,7 @@ GET Subscriptions with not permitted authorization scope ... Test title: GET Subscriptions with not permitted authorization scope ... Test objective: The objective is to test that GET method retrieve the list of existing subscriptions fails when using not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.16.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot index 350ac232..ced22f44 100644 --- a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot @@ -12,7 +12,7 @@ POST Terminate a NSInstance ... Test title: POST Terminate a NSInstance ... Test objective: The objective is to test that POST method terminate the NS ... Pre-conditions: NS instance in INSTANTIATED state - ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance has NOT_INSTANTIATED state @@ -26,7 +26,7 @@ POST Terminate a NSInstance - Conflict (Not Instantited) ... Test title: POST Terminate a NSInstance - Conflict (Not Instantited) ... Test objective: The objective is to test that POST method cannot terminate the NS because of conflict in resource status (i.e. the resource is not in INSTANTIATED state) ... Pre-conditions: NS instance is in NOT_INSTANTIATED state - ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance is in NOT_INSTANTIATED state @@ -40,7 +40,7 @@ GET Terminate NSInstance- Method not implemented ... Test title: GET Terminate NSInstance- Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Terminate NSInstance - Method not implemented ... Test title: PUT Terminate NSInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Terminate NSInstance - Method not implemented ... Test title: PATCH Terminate NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Terminate NSInstance - Method not implemented ... Test title: DELETE Terminate NSInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ POST Terminate a NSInstance with permitted authorization scope ... Test title: POST Terminate a NSInstance with permitted authorization scope ... Test objective: The objective is to test that POST method terminate the NS with permitted authorization scope ... Pre-conditions: NS instance in INSTANTIATED state - ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: NS instance has NOT_INSTANTIATED state @@ -102,7 +102,7 @@ POST Terminate a NSInstance with not permitted authorization scope ... Test title: POST Terminate a NSInstance with permitted authorization scope ... Test objective: The objective is to test that POST method terminate the NS fails when using not permitted authorization scope ... Pre-conditions: NS instance in INSTANTIATED state - ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot index f6f90939..1c7e28bc 100644 --- a/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/TerminateNSTaskWorkflow.robot @@ -14,7 +14,7 @@ Terminate Flow of NS lifecycle management operations ... Test title: Terminate Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Terminate a NS instance ... Pre-conditions: the resource is in INSTANTIATED state - ... Reference: Clause 6.4.8 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.8 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: the resource is in NOT_INSTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot b/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot index 3e679881..9f060aad 100644 --- a/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot +++ b/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot @@ -13,7 +13,7 @@ POST Update a NSInstance ... Test title: POST Update a NSInstance ... Test objective: The objective is to test that POST method update a NS instance ... Pre-conditions: An NS instance is in INSTANTIATED state - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is still INSTANTIATED and updated on the NFVO @@ -26,7 +26,7 @@ POST Update a NSInstance with feasibility check only ... Test title: POST Update a NSInstance ... Test objective: The objective is to test that POST method update a NS instance with feasibility check only ... Pre-conditions: An NS instance is in INSTANTIATED state - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Update a NSInstance - Conflict (Not Instantited) ... Test title: POST Update a NSInstance - Conflict (Not Instantited) ... Test objective: The objective is to test that POST method fail if a NS Instance is not existing or is in NOT_INSTANTIATED state ... Pre-conditions: An NS instance is in INSTANTIATED state - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is not updated on the NFVO @@ -52,7 +52,7 @@ GET Update NSInstance- Method not implemented ... Test title: GET Update NSInstance- Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Update NSInstance - Method not implemented ... Test title: PUT Update NSInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Update NSInstance - Method not implemented ... Test title: PATCH Update NSInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Update NSInstance - Method not implemented ... Test title: DELETE Update NSInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Update a NSInstance with permitted authorization scope ... Test title: POST Update a NSInstance with permitted authorization scope ... Test objective: The objective is to test that POST method update a NS instance with permitted authorization scope ... Pre-conditions: An NS instance is in INSTANTIATED state - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS instance is still INSTANTIATED and updated on the NFVO @@ -113,7 +113,7 @@ POST Update a NSInstance with not permitted authorization scope ... Test title: POST Update a NSInstance with not permitted authorization scope ... Test objective: The objective is to test that POST method update a NS instance fails when using not permitted authorization scope ... Pre-conditions: An NS instance is in INSTANTIATED state - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot b/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot index e1a2a8bd..f47b8179 100644 --- a/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot +++ b/SOL005/NSLifecycleManagement-API/UpdateNSTaskWorkflow.robot @@ -15,7 +15,7 @@ Update Flow of NS lifecycle management operations ... Test title: Update Flow of NS lifecycle management operations ... Test objective: The objective is to test the workflow for Update a NS instance ... Pre-conditions: the resource is in INSTANTIATED state - ... Reference: Clause 6.4.6 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.6 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: the resource is in INSTANTIATED state diff --git a/SOL005/NSLifecycleManagement-API/VNFSnapshots.robot b/SOL005/NSLifecycleManagement-API/VNFSnapshots.robot index 4a6c415f..5a8f8d1c 100644 --- a/SOL005/NSLifecycleManagement-API/VNFSnapshots.robot +++ b/SOL005/NSLifecycleManagement-API/VNFSnapshots.robot @@ -7,7 +7,7 @@ POST VNF Snapshots - Method Not Implemented ... Test title: POST VNF Snapshots - Method Not Implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET information about multiple VNF Snapshots ... Test title: GET information about multiple VNF Snapshots ... Test objective: The objective is to get information about multiples VNF snapshots ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET information about multiple VNF Snapshots Bad Request Invalid attribute-based ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ GET information about multiple VNF Snapshots Bad Request Invalid attribute selec ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -58,7 +58,7 @@ GET information about multiple VNF Snapshots with "all_fields" attribute selecto ... Test title: GET information about multiple VNF Snapshots with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -71,7 +71,7 @@ GET information about multiple VNF Snapshots with "exclude_default" attribute se ... Test title: GET information about multiple VNF Snapshots with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET information about multiple VNF Snapshots with "fields" attribute selector ... Test title: GET information about multiple VNF Snapshots with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ GET information about multiple VNF Snapshots with "exclude_default" and "fields" ... Test title: GET information about multiple VNF Snapshots with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -110,7 +110,7 @@ GET information about multiple VNF Snapshots with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF Snapshots with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -123,7 +123,7 @@ GET VNF Snapshots - Bad Request Response too Big ... Test title: GET VNF Snapshots - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing VNF Snapshots list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support paged response. ... Post-Conditions: none @@ -136,7 +136,7 @@ GET VNF Snapshots as Paged Response ... Test title: GET VNF Snapshots as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshots as paged response. ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports paged response. ... Post-Conditions: none @@ -149,7 +149,7 @@ PUT VNF Snapshots - Method not implemented ... Test title: PUT VNF Snapshots - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -161,7 +161,7 @@ PATCH VNF Snapshots - Method not implemented ... Test title: PATCH VNF Snapshots - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -173,7 +173,7 @@ DELETE VNF Snapshots - Method not implemented ... Test title: DELETE VNF Snapshots - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -185,7 +185,7 @@ GET information about multiple VNF Snapshots using Filter ... Test title: GET information about multiple VNF Snapshots using Filter ... Test objective: The objective is to get information about multiples VNF snapshots using filter ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -198,7 +198,7 @@ GET information about multiple VNF Snapshots with permitted authorization scope ... Test title: GET information about multiple VNF Snapshots with permitted authorization scope ... Test objective: The objective is to get information about multiples VNF snapshots with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -211,7 +211,7 @@ GET information about multiple VNF Snapshots with not permitted authorization sc ... Test title: GET information about multiple VNF Snapshots with not permitted authorization scope ... Test objective: The objective is to test that get information about multiples VNF snapshots fails when using not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.19.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml index fcbb7729..049c0f55 100644 --- a/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml +++ b/SOL005/NSLifecycleManagement-API/descriptors/SOL001/NSD/nsd_SOL001.yaml @@ -27,7 +27,7 @@ topology_template: flavourId: "VNF-B_flavor" flavourDescription: "VNF-B flavor" vnfm_info: - - 'etsivnfm:v4.5.1' + - 'etsivnfm:v5.1.1' requirements: virtualLink: ext_b_right: "vl_right" -- GitLab From f67683b379a67564d8dda4cfecc88ba83d707780 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Mon, 6 Jan 2025 12:04:07 +0100 Subject: [PATCH 121/141] updated NSInstance, NSInstances, NSLcmOpOcc, NSLcmOpOccs schemas as per NFVSOL(23)00387 --- .../schemas/NsInstance.schema.json | 72 +- .../schemas/NsInstances.schema.json | 72 +- .../schemas/NsLcmOpOcc.schema.json | 3139 +++++++++------- .../schemas/NsLcmOpOccs.schema.json | 3146 ++++++++++------- 4 files changed, 4047 insertions(+), 2382 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json index 3382fff9..fd6798a2 100644 --- a/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json +++ b/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json @@ -1734,14 +1734,14 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP. It shall comply with the provisions defined in table 6.5.3.12a-1.\nNOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be\n used, otherwise it will be ignored by the CISM.\nNOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the\n container cluster will assign an IP address.\nNOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes® that supports configuration of address pools for load balancer services.\nNOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP. It shall comply with the provisions defined in table 6.5.3.12a-1.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the\n container cluster will assign an IP address. \n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes® that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", "type": "object", "required": [ "type" ], "properties": { "type": { - "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n", + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", "enum": [ "IPV4", @@ -1753,12 +1753,40 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which the container cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "array", "items": { "type": "string" } + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } } } } @@ -2807,6 +2835,10 @@ "extensions": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", "type": "object" + }, + "vnfmId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -3026,14 +3058,14 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP. It shall comply with the provisions defined in table 6.5.3.12a-1.\nNOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be\n used, otherwise it will be ignored by the CISM.\nNOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the\n container cluster will assign an IP address.\nNOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes® that supports configuration of address pools for load balancer services.\nNOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP. It shall comply with the provisions defined in table 6.5.3.12a-1.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the\n container cluster will assign an IP address. \n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes® that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", "type": "object", "required": [ "type" ], "properties": { "type": { - "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n", + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", "enum": [ "IPV4", @@ -3045,12 +3077,40 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which the container cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "array", "items": { "type": "string" } + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } } } } diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json index f0d55308..9954b087 100644 --- a/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json +++ b/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json @@ -1736,14 +1736,14 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP. It shall comply with the provisions defined in table 6.5.3.12a-1.\nNOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be\n used, otherwise it will be ignored by the CISM.\nNOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the\n container cluster will assign an IP address.\nNOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes® that supports configuration of address pools for load balancer services.\nNOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP. It shall comply with the provisions defined in table 6.5.3.12a-1.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the\n container cluster will assign an IP address. \n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes® that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", "type": "object", "required": [ "type" ], "properties": { "type": { - "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n", + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", "enum": [ "IPV4", @@ -1755,12 +1755,40 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which the container cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "array", "items": { "type": "string" } + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } } } } @@ -2809,6 +2837,10 @@ "extensions": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", "type": "object" + }, + "vnfmId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -3028,14 +3060,14 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP. It shall comply with the provisions defined in table 6.5.3.12a-1.\nNOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be\n used, otherwise it will be ignored by the CISM.\nNOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the\n container cluster will assign an IP address.\nNOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes® that supports configuration of address pools for load balancer services.\nNOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP. It shall comply with the provisions defined in table 6.5.3.12a-1.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the\n container cluster will assign an IP address. \n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes® that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", "type": "object", "required": [ "type" ], "properties": { "type": { - "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n", + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", "enum": [ "IPV4", @@ -3047,12 +3079,40 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which the container cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "array", "items": { "type": "string" } + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } } } } diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOcc.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOcc.schema.json index 44af453a..0c3473fe 100644 --- a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOcc.schema.json +++ b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOcc.schema.json @@ -1,1185 +1,1958 @@ { - "description": "This type represents a request a NS lifecycle operation occurrence. It shall comply with the provisions defined in Table 6.5.2.3-1.\nNOTE 1:\tThis allows the OSS/BSS to obtain a copy of the latest \"result\" notification if it has not received it due to an error. If the notification represents the successful result of a lifecycle operation, at least an affectedVnf, or affectedPnf, or affectedVl, or affectedVnffg or affectedNs, or affectedSap shall be present.\nNOTE 2:\tA coordination action has timed out if the NFVO has not been able to read the \"Individual coordination action\" resource within a timeout interval after requesting the coordination to be started or to be cancelled. The length of the timeout interval is defined by means outside the scope of the present document\nNOTE 3:\tThe list of rejected coordinations may be garbage collected if the LCM operation occurrence has reached a terminal state, i.e. one of \"COMPLETED\", \"FAILED\", PARTIALLY COMPLETED and \"ROLLED_BACK\".\n", - "type": "object", - "required": ["id", "operationState", "statusEnteredTime", "nsInstanceId", "lcmOperationType", "startTime", "isAutomaticInvocation", "isCancelPending", "_links"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "operationState": { - "description": "The enumeration NsLcmOperationStateType shall comply with the provisions defined in Table 6.5.4.4-1. Value | Description ------|------------ PROCESSING | The LCM operation is currently in execution. COMPLETED | The LCM operation has been completed successfully. PARTIALLY_COMPLETED | The LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. OLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n", - "type": "string", - "enum": ["PROCESSING", "COMPLETED", "FAILED_TEMP", "FAILED", "ROLLING_BACK", "ROLLED_BACK"] - }, - "stateEnteredTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "nsInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "lcmOperationType": { - "description": "The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n", - "type": "string", - "enum": ["INSTANTIATE", "SCALE", "UPDATE", "TERMINATE", "HEAL"] - }, - "startTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "isAutomaticInvocation": { - "description": "Set to true if this NS LCM operation occurrence has been automatically triggered by the NFVO. This occurs in the case of auto-scaling, auto-healing and when a nested NS is modified as a result of an operation on its composite NS. Set to false otherwise.\n", - "type": "boolean" - }, - "operationParams": { - "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 6.7 shall apply. The following mapping between lcmOperationType and the data type of this attribute shall apply: - INSTANTIATE: InstantiateNsRequest - SCALE: ScaleNsRequest - UPDATE: UpdateNsRequest - HEAL: HealNsRequest - TERMINATE: TerminateNsRequest This attribute shall be present if this data type is returned in a response to reading an individual resource, and may be present according to the chosen attribute selector parameter if this data type is returned in a response to a query of a container resource.\n", - "type": "string", - "enum": ["INSTANTIATE", "SCALE", "UPDATE", "HEAL", "TERMINATE"] - }, - "isCancelPending": { - "description": "If the LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false.\n", - "type": "boolean" - }, - "cancelMode": { - "description": "Cancellation mode.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, and shall wait for the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, to finish execution or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, shall cancel the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, and shall wait for the cancellation to finish or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\n", - "type": "string", - "enum": ["GRACEFUL", "FORCEFUL"] - }, - "error": { - "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", - "type": "object", - "required": ["status", "detail"], - "properties": { - "type": { - "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", - "type": "string", - "format": "URI" - }, - "title": { - "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", - "type": "string" - }, - "status": { - "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", - "type": "integer" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem.\n", - "type": "string" - }, - "instance": { - "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", - "type": "string", - "format": "URI" - } - } - }, - "resourceChanges": { - "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable\n", - "type": "object", - "properties": { - "affectedVnfs": { - "description": "Information about the VNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified VNFs.\nNOTE:\tAt least one of the attributes \"changedVnfInfo\", \"changedExtConnectivity\" or \"modificationsTriggeredByVnfPkgChange\" shall be present. Not more than one of \"changedVnfInfo\" and \"modificationsTriggeredByVnfPkgChange\" shall be present.\n", - "type": "object", - "required": ["vnfInstanceId", "vnfdId", "vnfProfileId", "vnfName", "changeType", "changeResult"], - "anyOf": [{ - "required": ["changedExtConnectivity"] - }, { - "oneOf": [{ - "required": ["changedVnfInfo"] - }, { - "required": ["modificationsTriggeredByVnfPkgChange"] - }] - }], - "properties": { - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProfileId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "vnfName": { - "description": "Name of the VNF Instance.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change Permitted values: - ADD - REMOVE - INSTANTIATE - TERMINATE - SCALE - CHANGE_FLAVOUR - HEAL - OPERATE - MODIFY_INFORMATION - CHANGE_EXTERNAL_VNF_CONNECTIVITY -\tCHANGE_VNFPKG\n", - "type": "string", - "enum": ["ADD", "REMOVE", "INSTANTIATE", "TERMINATE", "SCALE", "CHANGE_FLAVOUR", "HEAL", "OPERATE", "MODIFY_INFORMATION", "CHANGE_EXTERNAL_VNF_CONNECTIVITY", "CHANGE_VNFPKG"] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", - "type": "string", - "enum": ["COMPLETED", "ROLLED_BACK", "FAILED"] - }, - "changedInfo": { - "description": "Information about the changed VNF instance information, including VNF configurable properties,if applicable. When the \"changedInfo\" attribute is present, either the \"changedVnfInfo\" attribute or the \"changedExtConnectivity\" attribute or both shall be present.\n", - "type": "object", - "anyOf": [{ - "required": ["changedVnfInfo"] - }, { - "required": ["changedVnfInfo"] - }, { - "required": ["modificationsTriggeredByVnfPkgChange"] - }], - "oneOf": [{ - "required": ["changedVnfInfo"] - }, { - "required": ["modificationsTriggeredByVnfPkgChange"] - }], - "properties": { - "changedVnfInfo": { - "description": "This type represents the information that is requested to be modified for a VNF instance. The information to be modified shall comply with the associated NSD. EXAMPLE. The vnfPkgId attribute value for a particular VNF instance can only be updated with a value that matches the identifier value of a VNF package whose vnfdId is present in the associated profile of the NSD.\n", - "type": "object", - "required": ["vnfInstanceId"], - "properties": { - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstanceName": { - "description": "New value of the \"vnfInstanceName\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "New value of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "changedExtConnectivity": { - "description": "Information about changed external connectivity, if applicable. Only information about external VL instances that have been added or modified shall be provided. See note.\n", - "type": "array", - "items": { - "type": "object", - "required": ["id", "resourceHandle"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM. NOTE: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "object", - "required": ["resourceId"], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. See note.\n", - "type": "string" - } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. NOTE 1:\tThe 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:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", - "type": "object", - "required": ["id", "resourceHandle"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM. NOTE: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "object", - "required": ["resourceId"], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. See note.\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "secondaryCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - } - } - } - }, - "currentVnfExtCpData": { - "description": "This type represents configuration information for external CPs created from a CPD.\nNOTE 1:\tIn 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: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure. NOTE 3: \tWithin 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.\n", - "type": "object", - "required": ["cpdId"], - "properties": { - "cpdId": { - "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", - "type": "string" - }, - "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is 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). See note 2 and note 3.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL. NOTE 1:\tThe following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\":\n -\tAt least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for\n an external CP instance representing a subport that is to be created, or an external CP instance\n that is to be created by creating the corresponding VNFC or VNF instance during the current or\n a subsequent LCM operation, or for an existing external CP instance that is to be re-configured\n or added to a particular external virtual link.\n -\tIf the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided\n referencing a pre-created link port with pre-configured address information.\n -\tIf both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that\n the cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\nNOTE 2:\tIn case the NFVO manages its own identifier space, the NFVO may remap this identifier when communicating with the VNFM. If the NFVO knows that there can be an identifier collision when communicating with the VNFM by using the identifier from the OSS/BSS, the NFVO shall remap it.\n", - "type": "object", - "anyOf": [{ - "required": ["linkPortId"] - }, { - "required": ["cpProtocolData"] - }], - "properties": { - "parentCpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "linkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "createExtLinkPort": { - "description": "Indicates the need to create a dedicated link port for the external CP. If set to True, a link port is created. If set to False, no link port is created. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", - "type": "boolean" - }, - "cpProtocolData": { - "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See note 1.\n", - "type": "array", - "items": { - "description": "This type represents network protocol data.\n", - "type": "object", - "required": ["layerProtocol"], - "properties": { - "layerProtocol": { - "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n", - "type": "string", - "enum": ["IP_OVER_ETHERNET"] - }, - "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. NOTE 3:\tIf the CP instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. NOTE 4:\tDepending 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.\n", - "type": "object", - "anyOf": [{ - "required": ["ipAddresses"] - }, { - "required": ["macAddress"] - }], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values are: -\tVLAN: The subport uses VLAN as encapsulation type. -\tINHERIT: The subport gets its segmentation type from the network it is connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", - "type": "string", - "enum": ["VLAN", "INHERIT"] - }, - "segmentationId": { - "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", - "type": "array", - "items": { - "type": "object", - "required": ["type"], - "oneOf": [{ - "required": ["fixedAddresses"] - }, { - "required": ["numDynamicAddresses"] - }, { - "required": ["addressRange"] - }], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4\n - IPV6\n", - "type": "string", - "enum": ["IPV4", "IPV6"] - }, - "fixedAddresses": { - "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "numDynamicAddresses": { - "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "integer" - }, - "addressRange": { - "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", - "type": "object", - "required": ["minAddress", "maxAddress"], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "modificationsTriggeredByVnfPkgChange": { - "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation. The \"ModificationsTriggeredByVnfPkgChange\" data type shall comply with the provisions defined in table 6.5.3.79-1.\n", - "type": "object", - "properties": { - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". 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.\n", - "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 the related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A Version. Representation: string of variable length.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A Version. Representation: string of variable length.\n", - "type": "string" - } - } - } - } - } - } - } - }, - "affectedPnfs": { - "description": "Information about the PNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified PNFs. It shall comply with the provisions in Table 6.5.3.3-1.\n", - "type": "object", - "required": ["pnfId", "pnfdId", "pnfProfileId", "cpInstanceId"], - "properties": { - "pnfId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "pnfdId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "pnfProfileId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "pnfName": { - "description": "Name of the PNF.\n", - "type": "string" - }, - "cpInstanceId": { - "description": "Identifier of the CP in the scope of the PNF.\n", - "type": "array", - "items": { - "description": "An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n", - "type": "string" - } - }, - "changeType": { - "description": "Signals the type of change. Permitted values: - ADD - REMOVE - MODIFY\n", - "type": "string", - "enum": ["ADD", "REMOVE", "MODIFY"] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", - "type": "string", - "enum": ["COMPLETED", "ROLLED_BACK", "FAILED"] - } - } - } - }, - "affectedVls": { - "description": "Information about the VL instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary VLs. NOTE:\tThe resource handles of the affected NS link ports can be found by dereferencing the identifiers in the \"linkPortIds\" attribute.\n", - "type": "object", - "required": ["nsVirtualLinkInstanceId", "nsVirtualLinkDescId", "vlProfileId", "changeType", "changeResult"], - "properties": { - "nsVirtualLinkInstanceId": { - "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", - "type": "string" - }, - "nsVirtualLinkDescId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "vlProfileId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADD * DELETE * MODIFY * ADD_LINK_PORT * REMOVE_LINK_PORT\n", - "type": "string", - "enum": ["ADD", "DELETE", "MODIFY", "ADD_LINK_PORT", "REMOVE_LINK_PORT"] - }, - "linkPortIds": { - "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references an \"NsLinkPortInfo\" structure.\nShall be set when changeType is equal to \"ADD_LINK_PORT\" or \"REMOVE_LINK_PORT\", and the related \"NsLinkPortInfo\" structures are present (case \"add\") or have been present (case \"remove\") in the \"NsVirtualLinkInfo\" structure that is represented by the \"virtualLinkInfo\" attribute in the \"NsInstance\" structure. See note.\n", - "type": "array", - "items": { - "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", - "type": "string" - } - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: * COMPLETED * ROLLED_BACK * FAILED\n", - "type": "string", - "enum": ["COMPLETED", "ROLLED_BACK", "FAILED"] - } - } - } - }, - "affectedVnffgs": { - "description": "Information about the VNFFG instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified VNFFG instances. It shall comply with the provisions in Table 6.5.3.5-1.\n", - "type": "object", - "required": ["vnffgInstanceId", "vnffgdId"], - "properties": { - "vnffgInstanceId": { - "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", - "type": "string" - }, - "vnffgdId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: - ADD - DELETE - MODIFY\n", - "type": "string", - "enum": ["ADD", "DELETE", "MODIFY"] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", - "type": "string", - "enum": ["COMPLETED", "ROLLED_BACK", "FAILED"] - } - } - } - }, - "affectedNss": { - "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified nested NSs. It shall comply with the provisions in Table 6.5.3.6-1.\n", - "type": "object", - "required": ["nsInstanceId", "nsdId", "changeType", "changeResult"], - "properties": { - "nsInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "nsdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - INSTANTIATE - SCALE - UPDATE - HEAL - TERMINATE\n", - "type": "string", - "enum": ["ADD", "REMOVE", "INSTANTIATE", "SCALE", "UPDATE", "HEAL", "TERMINATE"] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED - PARTIALLY_COMPLETED\n", - "type": "string", - "enum": ["COMPLETED", "ROLLED_BACK", "FAILED", "PARTIALLY_COMPLETED"] - }, - "changedInfo": { - "description": "Information about the changed NS instance information, if applicable.\n", - "type": "object", - "properties": { - "wanConnectionInfoModifications": { - "description": "Information about the modified WAN related connectivity information, if applicable.\n", - "type": "array", - "items": { - "description": "This type represents attribute modifications that were performed on WAN connection information. The attributes that can be included consist of those requested to be modified explicitly with the \"UpdateNsRequest\" data structure. It shall comply with the provisions defined in table 6.5.3.93-1.\n", - "type": "object", - "required": ["wanConnectionInfoId"], - "properties": { - "wanConnectionInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "mscsName": { - "description": "If present, this attribute signals modifications of the \"mscsName\" attribute in \"MscsInfo\" as defined in clause 6.5.3.82.\n", - "type": "string" - }, - "mscsDescription": { - "description": "If present, this attribute signals modifications of the \"mscsDescription\" attribute in \"MscsInfo\" as defined in clause 6.5.3.82.\n", - "type": "string" - }, - "mscsEndpoints": { - "description": "If present, this attribute signals modifications of certain entries in the \"mscsEndpoints\" attribute array in \"MscsInfo\", as defined in clause 6.5.3.82.\n", - "type": "array", - "items": { - "description": "This type provides encapsulates information about an MSCS endpoint of the MSCS. It shall comply with the provisions defined in table 6.5.3.83-1.\n", - "type": "object", - "required": ["mscsEndpointId", "directionality", "connectivityServiceEndpoinId"], - "properties": { - "mscsEndpointId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "directionality": { - "description": "Directionality of the data traffic in the context of the terminating MSCS endpoint from WANs perspective. Permitted values: -\tINBOUND: to indicate into the WAN. -\tOUTBOUND: to indicate from the WAN. -\tBOTH: to indicate bidirectional data traffic to/from the WAN.\n", - "type": "string", - "enum": ["INBOUND", "OUTBOUND", "BOTH"] - }, - "connectivityServiceEndpoinId": { - "description": "References the connectivity service endpoint configuration information applicable to support the MSCS endpoint. More than one connectivity service endpoint can be referred when endpoints are in LAG mode.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - } - }, - "removeMscsEndpointIds": { - "description": "If present, this attribute signals the deletion of certain entries in the \"mscsEndpoints\" attribute array in \"MscsInfo\", as defined in clause 6.5.3.82.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "connectivityServiceEndpoints": { - "description": "If present, this attribute signals modifications of certain entries in the \"connectivityServiceEndpoints\" attribute array in \"WanConnectionProtocolInfo\", as defined in clause 6.5.3.91.\n", - "type": "array", - "items": { - "description": "This type provides configuration data for the NFVI-PoP network gateway providing connectivity service endpoints. The connectivity service endpoints are used as endpoints by an MSCS. It shall comply with the provisions defined in Table 6.5.3.84-1.\n", - "type": "object", - "required": ["connectivityServiceEndpointId", "vimId"], - "properties": { - "connectivityServiceEndpointId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "siteToWanLayer2ProtocolData": { - "description": "This type provides information about Layer 2 protocol specific information for the configuration of the NFVI-PoP network gateway to enable the stitching of the intra-site VN to the MSCS over the WAN. It shall comply with the provisions defined in Table 6.5.3.85-1. NOTE:\tEither \"networkResources\" or \"vnSegmentsIds\" shall be provided, but not both.\n", - "type": "object", - "required": ["layer2ConnectionInfo"], - "properties": { - "layer2ConnectionInfo": { - "description": "Layer 2 protocol parameters of the connectivity service endpoint (CSE).\n", - "type": "object", - "required": ["connectionType", "interfaceType", "interfaceTagging", "encapsulationType"], - "properties": { - "connectionType": { - "description": "The type of connection to be established on the connectivity service point. Permitted values: -\tCSE: defined by the characteristics of the existing referred connectivity service point. -\tAGGREGATE_CSE: create an aggregation of the connectivity service endpoints.\n", - "type": "string", - "enum": ["CSE", "AGGREGATE_CSE"] - }, - "interfaceType": { - "description": "To indicate whether to create logical interfaces on the referred connectivity service endpoint or new aggregated connectivity service endpoint. Permitted values: -\tPARENT: use the mapped interface to the connectivity service endpoint as is, i.e., do not create logical interfaces. -\tLOGICAL: create logical interfaces.\n", - "type": "string", - "enum": ["PARENT", "LOGICAL"] - }, - "interfaceTagging": { - "description": "The type of frames to forward on the connectivity service point. Permitted values: -\tUNTAGGED: an interface where frames are not tagged. -\tTAGGED: an interface configured to forward tagged frames (i.e., enabled for VLAN tagging).\n", - "type": "string", - "enum": ["UNTAGGED", "TAGGED"] - }, - "encapsulationType": { - "description": "The type of encapsulation. If the interfaceTagging=\"TAGGED\", either \"VLAN\" or \"VXLAN\" shall be set. Permitted values: -\tETH: generic Ethernet encapsulation. -\tVLAN: encapsulation based on VLAN. -\tVXLAN: encapsulation based on VXLAN.\n", - "type": "string", - "enum": ["ETH", "VLAN", "VXLAN"] - }, - "vlanTaggingType": { - "description": "Type of encapsulation method for VLAN tagging. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VLAN\". Permitted values: -\tDOT1Q: used when packets on the CSE are encapsulated with one or a set of customer VLAN identifiers. -\tQINQ: used when packets on the CSE are encapsulated with multiple customer VLAN identifiers and a single\n service VLAN identifier.\n- QINANY: used when packets on the CSE have no specific customer VLAN and a service VLAN identifier is used.\n", - "type": "string", - "enum": ["DOT1Q", "QINQ", "QINANY"] - }, - "wanSegmentIds": { - "description": "Segment identifiers to pass on the tagged interface. Shall be present if encapsulationType=\"VLAN\" or VXLAN\".\n", - "type": "object", - "required": ["wanSegmentIdValue"], - "properties": { - "wanSegmentIdValue": { - "description": "Identifier of the network segment (e.g., VLAN id or VNI).\n", - "type": "string" - }, - "wanSegmentIdUpperRange": { - "description": "Identifier of the upper range network segment, in case the \"wanSegmentIds\" is used to define a range.\n", - "type": "string" - } - } - }, - "vxlanConfig": { - "description": "Additional configuration needed when using VXLAN encapsulation. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VXLAN\".\n", - "type": "object", - "required": ["peerMode"], - "properties": { - "peerMode": { - "description": "Type of VXLAN access mode. Default value is \"STATIC\".\nPermitted values: -\tSTATIC -\tBGP_EVPN\n", - "type": "string", - "enum": ["STATIC", "BGP_EVPN"] - }, - "peers": { - "description": "List of IP addresses of VTEP peers when using static mode.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - } - }, - "lagInterfaceData": { - "description": "Information for setting up a LAG interface aggregating multiple connectivity service endpoints.\n", - "type": "object", - "required": ["aggregatedEndpoints", "lacpActivation", "lacpConfig"], - "properties": { - "aggregatedEndpoints": { - "description": "List of the connectivity service endpoints that are to be aggregated. Shall be present if connectionType=\"AGGREGATE_CSE\". In case of aggregating connectivity service endpoints, only one SiteToWanLayer2ProtocolData shall be provided for the whole set of aggregated endpoints.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "lacpActivation": { - "description": "Indicates whether to activate LACP on the interface. If \"TRUE\", the LACP is to be activated, or \"FALSE\" otherwise. Default value is \"FALSE\".\n", - "type": "boolean" - }, - "lacpConfig": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "layer2ControlProtocol": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "mtuL2": { - "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 2 (in bytes). Default value is \"1500\" (bytes).\n", - "type": "number" - }, - "virtualRoutingAndForwarding": { - "description": "Configuration related to the L2 virtual routing and forwarding (MAC-VRF).\n", - "type": "object", - "required": ["macVrfName"], - "properties": { - "macVrfName": { - "description": "Name (or identifier) of the MAC-VRF instance.\n", - "type": "string" - } - } - }, - "forwardingConfig": { - "description": "Information related to the forwarding of the VN in the NFVI-PoP to the connectivity service endpoint, if information about the VN to \"stitch\" is already known. . by the OSS/BSS. Shall not be provided otherwise, in which case the NFVO will infer the forwarding configuration based on the NS VL, or external VL, or externally-managed VL provisioning.\n", - "type": "object", - "oneOf": [{ - "required": ["networkResources"] - }, { - "required": ["vnSegmentIds"] - }], - "properties": { - "networkResources": { - "description": "Reference to the VN resource to be forwarded into/from the MSCS. See note.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM. NOTE: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "object", - "required": ["resourceId"], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. See note.\n", - "type": "string" - } - } - } - }, - "vnSegmentIds": { - "description": "Identifiers of the network segments of the VN resources to be forwarded into/from the MSCS.\n", - "type": "object", - "required": ["vnSegmentIdValue"], - "properties": { - "vnSegmentIdValue": { - "description": "Identifier of the network segment.\n", - "type": "string" - }, - "vnSegmentIdUpperRange": { - "description": "Identifier of the upper range network segment, in case the \"vnSegmentIds\" is used to define a range.\n", - "type": "string" - } - } - } - } - } - } - }, - "siteToWanLayer3ProtocolData": { - "description": "This type provides information about Layer 3 protocol specific information for the stitching of the intra-site VN to the multi-site connectivity service over the WAN. It shall comply with the provisions defined in Table 6.5.3.86-1.\n", - "type": "object", - "required": ["routingInfo"], - "properties": { - "logicalInterfaceIpAddress": { - "description": "IP addressing information associated to a logical interface. Shall be present if the \"interfaceType\" of the SiteToWanLayer2ProtocolData is equal to \"LOGICAL\".\n", - "type": "object", - "required": ["ipAddress", "associatedSegmentId"], - "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" - }, - "associatedSegmentId": { - "description": "The associated segment identifier that has triggered the creation of the logical interface. The value shall be one of the values listed in the \"wanSegmentIds\" of the \"siteToWanLayer2ProtocolData\".\n", - "type": "string" - } - } - }, - "routingInfo": { - "description": "The routing information that is activated on the connectivity service endpoint. More than one \"routingInfo\" is allowed to enable stacking different routing protocols (e.g., one routing protocol for IPv4 and another one for IPv6).\n", - "type": "object", - "required": ["routingProtocol", "routingAddressFamily"], - "properties": { - "routingProtocol": { - "description": "The routing protocol that is activated on the connectivity service endpoint. Permitted values: -\tBGP: used for dynamic routing BGPv4. -\tRIP: used for dynamic routing RIPv2. -\tOSPF: used for dynamic routing (OSPF version 2 for IPv4; and OSPF version 3 for IPv6). -\tSTATIC: used for static routing. -\tDIRECT: used when the NFVI-PoP network is directly connected to the WAN provider network. -\tVRRP: used when the NFVI-PoP network is directly connected to the WAN provider network with virtual\n router redundancy protocol support (VRRP).\n", - "type": "string", - "enum": ["BGP", "RIP", "OSPF", "STATIC", "DIRECT", "VRRP"] - }, - "staticRouting": { - "description": "Defines a static route. It shall only be present if the routingProtocol=\"STATIC\".\n", - "type": "object", - "required": ["ipVersion", "ipPrefix", "prefixSize", "nextHop"], - "properties": { - "ipVersion": { - "description": "The IP version applicable to the routing entry. Permitted values: -\tIPV4 -\tIPV6\n", - "type": "string", - "enum": ["IPV4", "IPV6"] - }, - "ipPrefix": { - "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" - }, - "prefixSize": { - "description": "The IP prefix size.\n", - "type": "number" - }, - "nextHop": { - "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" - } - } - }, - "routingAddressFamily": { - "description": "The IP version applicable to the dynamic routing protocol. Shall be present for dynamic routing protocols. Permitted values: -\tIPV4 -\tIPV6\n", - "type": "string", - "enum": ["IPV4", "IPv6"] - }, - "ospfRouting": { - "description": "Defines parameters for OSPF routing. It shall only be present if the routingProtocol=\"OSPF\".\n", - "type": "object", - "required": ["areaId"], - "properties": { - "areaId": { - "description": "The routing area identifier, e.g., a number or an IP address.\n", - "type": "string" - } - } - }, - "bgpRouting": { - "description": "Defines parameters for BGP routing. It shall only be present if the routingProtocol=\"BGP\".\n", - "type": "object", - "required": ["bgpAs"], - "properties": { - "bgpAs": { - "description": "The Autonomous System (AS) identification applicable to the BGP routing info entry.\n", - "type": "object" - }, - "bgpNeighbour": { - "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" - }, - "bgpAdditionalParam": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "routeMapsDistribution": { - "description": "Maps of routes that are permitted or denied for redistribution.\n", - "type": "object", - "required": ["policy", "sequence", "matchAndSetRule"], - "properties": { - "policy": { - "description": "The policy to apply to the route distribution.\nPermitted values: -\tPERMIT -\tDENY\n", - "type": "string", - "enum": ["PERMIT", "DENY"] - }, - "sequence": { - "description": "Sequence or index number assigned to the route-map.\n", - "type": "number" - }, - "matchAndSetRule": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - } - } - }, - "mtuL3": { - "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 3 (in bytes). Default value is \"1500\" (bytes).\n", - "type": "number" - }, - "virtualRoutingAndForwarding": { - "description": "Configuration related to the virtual routing and forwarding (VRF).\n", - "type": "object", - "required": ["vrfName"], - "properties": { - "vrfName": { - "description": "Name (or identifier) of the VRF instance.\n", - "type": "string" - } - } - }, - "bfdConfig": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - } - } - } - }, - "removeConnectivityServiceEndpoints": { - "description": "If present, this attribute signals the deletion of certain entries in the \"connectivityServiceEndpoints\" attribute array in \"WanConnectionProtocolInfo\", as defined in clause 6.5.3.91.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "affectedSaps": { - "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified SAP of a NS. It shall comply with the provisions in Table 6.5.3.7-1.\n", - "type": "object", - "required": ["sapInstanceId", "sapdId"], - "properties": { - "sapInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "sapdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "sapName": { - "description": "Human readable name for the SAP.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - MODIFY\n", - "type": "string", - "enum": ["ADD", "REMOVE", "MODIFY"] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", - "type": "string", - "enum": ["COMPLETED", "ROLLED_BACK", "FAILED"] - } - } - } - } - } - }, - "lcmCoordinations": { - "description": "Information about LCM coordination actions (see clause 12) related to this LCM operation occurrence.\n", - "type": "array", - "items": { - "type": "object", - "required": ["id", "coordinationActionName", "startTime", "endpointType"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "coordinationActionName": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "coordinationResult": { - "description": "The enumeration LcmCoordResultType defines the permitted values to represent the result\nof executing an LCM coordination action. The coordination result also implies the action\nto be performed by the NFVO as the follow-up to this coordination. The LcmCoordResultType\nshall comply with the provisions defined in table 12.5.4.3.-1.\n\n- CONTINUE: The related LCM operation shall be continued, staying in the state \"PROCESSING\".\n- ABORT: The related LCM operation shall be aborted by transitioning into the state \"FAILED_TEMP\".\n- CANCELLED: The coordination action has been cancelled upon request of the API consumer, i.e. the NFVO. The related LCM operation shall be aborted by transitioning into \n the state \"FAILED_TEMP\".\n", - "type": "string", - "enum": ["CONTINUE", "ABORT", "CACELLED"] - }, - "startTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "endTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: -\tMGMT: coordination with other operation supporting management systems (e.g. OSS/BSS)\n", - "type": "string", - "enum": ["MGMT"] - }, - "delay": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - } - } - } - }, - "rejectedLcmCoordinations": { - "description": "Information about LCM coordination actions (see clause 12) that were rejected by 503 error which means they can be tried again after a delay. See note 3.\n", - "type": "array", - "items": { - "type": "object", - "required": ["coordinationActionName", "rejectionTime", "endpointType", "delay"], - "properties": { - "coordinationActionName": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "rejectionTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: -\tMGMT: coordination with other operation supporting management systems (e.g. OSS/BSS)\n", - "type": "string", - "enum": ["MGMT"] - }, - "delay": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - } - } - } - }, - "warnings": { - "description": "Warning messages that were generated while the operation was executing.\nIf the operation has included VNF LCM operations or NS LCM coordination actions and these have resulted in warnings, such warnings should be added to this attribute.\n", - "type": "array", - "items": { - "type": "string" - } - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": ["self", "nsInstance"], - "properties": { - "self": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "nsInstance": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "cancel": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "retry": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "rollback": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "continue": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "fail": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - } - } - } - } + "description": "This type represents a request a NS lifecycle operation occurrence. It shall comply with the provisions defined in Table 6.5.2.3-1.\nNOTE 1: This allows the OSS/BSS to obtain a copy of the latest \"result\" notification if it has not received it due to an error. If the notification represents the successful result of a lifecycle operation, at least an affectedVnf, or affectedPnf, or affectedVl, or affectedVnffg or affectedNs, or affectedSap shall be present.\nNOTE 2: A coordination action has timed out if the NFVO has not been able to read the \"Individual coordination action\" resource within a timeout interval after requesting the coordination to be started or to be cancelled. The length of the timeout interval is defined by means outside the scope of the present document\nNOTE 3: The list of rejected coordinations may be garbage collected if the LCM operation occurrence has reached a terminal state, i.e. one of \"COMPLETED\", \"FAILED\", “PARTIALLY COMPLETED” and \"ROLLED_BACK\".\n", + "type": "object", + "required": [ + "id", + "operationState", + "statusEnteredTime", + "nsInstanceId", + "lcmOperationType", + "startTime", + "isAutomaticInvocation", + "isCancelPending", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operationState": { + "description": "Value | Description ------|------------ PROCESSING | The NS LCM operation is currently in execution. COMPLETED | The NS LCM operation has been completed successfully. PARTIALLY_COMPLETED | The NS LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The NS LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The NS LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action will not succeed. OLLING_BACK | The NS LCM operation is currently being rolled back. ROLLED_BACK | The NS LCM operation has been successfully rolled back, i.e. The state of the NS prior to the original operation invocation has been restored as closely as possible.\n", + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED_TEMP", + "FAILED", + "ROLLING_BACK", + "ROLLED_BACK" + ] + }, + "stateEnteredTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "nsInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "lcmOperationType": { + "description": "The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "UPDATE", + "TERMINATE", + "HEAL" + ] + }, + "startTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "isAutomaticInvocation": { + "description": "Set to true if this NS LCM operation occurrence has been automatically triggered by the NFVO. This occurs in the case of auto-scaling, auto-healing and when a nested NS is modified as a result of an operation on its composite NS. Set to false otherwise.\n", + "type": "boolean" + }, + "operationParams": { + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 6.7 shall apply. The following mapping between lcmOperationType and the data type of this attribute shall apply: - INSTANTIATE: InstantiateNsRequest - SCALE: ScaleNsRequest - UPDATE: UpdateNsRequest - HEAL: HealNsRequest - TERMINATE: TerminateNsRequest This attribute shall be present if this data type is returned in a response to reading an individual resource, and may be present according to the chosen attribute selector parameter if this data type is returned in a response to a query of a container resource.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "UPDATE", + "HEAL", + "TERMINATE" + ] + }, + "isCancelPending": { + "description": "If the LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false.\n", + "type": "boolean" + }, + "cancelMode": { + "description": "Cancellation mode.\nIf the NS LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the NFVO shall not start any new VNF lifecycle management and resource management operation, and shall wait for the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, to finish execution or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\nIf the NS LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the NFVO shall not start any new VNF lifecycle management and resource management operation, shall cancel the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, and shall wait for the cancellation to finish or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\n", + "type": "string", + "enum": [ + "GRACEFUL", + "FORCEFUL" + ] + }, + "error": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + }, + "resourceChanges": { + "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable\n", + "type": "object", + "properties": { + "affectedVnfs": { + "description": "Information about the VNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified VNFs.\nNOTE: At least one of the attributes \"changedVnfInfo\", \"changedExtConnectivity\" or \"modificationsTriggeredByVnfPkgChange\" or “changedCertificateInfo” shall be present. Not more than one of \"changedVnfInfo\" and \"modificationsTriggeredByVnfPkgChange\" shall be present.\n", + "type": "object", + "required": [ + "vnfInstanceId", + "vnfdId", + "vnfProfileId", + "vnfName", + "changeType", + "changeResult" + ], + "anyOf": [ + { + "required": [ + "changedExtConnectivity" + ] + }, + { + "oneOf": [ + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ] + } + ], + "properties": { + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProfileId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "vnfName": { + "description": "Name of the VNF Instance.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change Permitted values: - ADD - REMOVE - INSTANTIATE - TERMINATE - SCALE - CHANGE_FLAVOUR - HEAL - OPERATE - MODIFY_INFORMATION - CHANGE_EXTERNAL_VNF_CONNECTIVITY - CHANGE_VNFPKG\n", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "INSTANTIATE", + "TERMINATE", + "SCALE", + "CHANGE_FLAVOUR", + "HEAL", + "OPERATE", + "MODIFY_INFORMATION", + "CHANGE_EXTERNAL_VNF_CONNECTIVITY", + "CHANGE_VNFPKG" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + }, + "changedInfo": { + "description": "Information about the changed VNF instance information, including VNF configurable properties, and certificate content if applicable. When the \"changedInfo\" attribute is present, either the \"changedVnfInfo\" attribute or the \"changedExtConnectivity\" attribute or both shall be present.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ], + "oneOf": [ + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ], + "properties": { + "changedVnfInfo": { + "description": "This type represents the information that is requested to be modified for a VNF instance. The information to be modified shall comply with the associated NSD. EXAMPLE. The vnfPkgId attribute value for a particular VNF instance can only be updated with a value that matches the identifier value of a VNF package whose vnfdId is present in the associated profile of the NSD.\n", + "type": "object", + "required": [ + "vnfInstanceId" + ], + "properties": { + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "New value of the \"vnfInstanceName\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "New value of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "changedExtConnectivity": { + "description": "Information about changed external connectivity, if applicable. Only information about external VL instances that have been added or modified shall be provided. See note.\n", + "type": "array", + "items": { + "description": "This type represents information about an VNF external VL.", + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. 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.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "secondaryCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + }, + "extNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type represents the information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network\n", + "type": "object", + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], + "properties": { + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "netAttDefResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + }, + "associatedExtCpId": { + "description": "Identifier of the external CP of the VNF associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP of the VNF associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + }, + "currentVnfExtCpData": { + "description": "This type represents configuration information for external CPs created from a CPD.\nNOTE 1: In case this identifier refers to a CPD with trunking enabled, the external CP instances created from this CPD will represent ports in a trunk. NOTE 2: The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure. NOTE 3: Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the \"cpdId' attribute, there shall be one \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk, all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance different than the one that has used it before the operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396 [11]). See notes 2, 3 and 4.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of a VNF external connection point. In the case of VM-based deployment of the VNFC exposing the external CP: In case a link port is provided, the NFVO shall use that link port when connecting the VNF external CP to the external VL. • In case a link port is not provided, the NFVO or VNFM shall create a link port on the external VL, and use that link port to connect the VNF external CP to the external VL. In the case of container-based deployment of the VNFC exposing the external CP, the NFVO and VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\nNOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\"\n for an external CP instance connected or to be connected to a virtual network not\n categorized as secondary container cluster network:\n - At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for\n an external CP instance representing a subport that is to be created, or an external CP instance\n that is to be created by creating the corresponding VNFC or VNF instance during the current or\n a subsequent LCM operation, or for an existing external CP instance that is to be re-configured\n or added to a particular external virtual link.\n - If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided\n referencing a pre-created link port with pre-configured address information.\n - If both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that\n the cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\nNOTE 2: In case the NFVO manages its own identifier space, the NFVO may remap this identifier\n when communicating with the VNFM. If the NFVO knows that there can be an identifier collision\n when communicating with the VNFM by using the identifier from the OSS/BSS, the NFVO shall remap it.\nNOTE 3: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n − Void.\n − At least one of these attributes shall be present for a to-be-created external CP instance or an existing\n external CP instance.\nNOTE 4: Cardinality greater than 1 is only applicable for specific cases where more than one network\n attachment definition resource is needed to fulfil the connectivity requirements of the external CP,\n e.g. to build a link redundant mated pair in SR-IOV cases. When more than one \"netAttDefResourceId\"\n is indicated, all shall belong to the same namespace as defined by the corresponding \n \"containerNamespace\" attribute in the \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\nNOTE 5: Either \"linkPortId\" or \"netAttDefResourceId\" may be included, but not both.\n", + "type": "object", + "oneOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "createExtLinkPort": { + "description": "Indicates the need to create a dedicated link port for the external CP. If set to True, a link port is created. If set to False, no link port is created. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "type": "boolean" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 3.\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\nNOTE:\tThis 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.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values: - IP_OVER_ETHERNET - IP_FOR_VIRTUAL_CP See note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet. NOTE 1: 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.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "ipAddresses" + ] + }, + { + "required": [ + "macAddress" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationType": { + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values are: - VLAN: The subport uses VLAN as encapsulation type. - INHERIT: The subport gets its segmentation type from the network it is connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "type": "string", + "enum": [ + "VLAN", + "INHERIT" + ] + }, + "segmentationId": { + "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values:\n - IPV4\n - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents network address data for a virtual CP. It shall comply with the provisions defined in table 6.5.3.12a-1.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the\n container cluster will assign an IP address. \n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes® that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + } + } + } + } + } + }, + "netAttDefResourceId": { + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 3, 4 and 5.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "modificationsTriggeredByVnfPkgChange": { + "description": "This type represents attribute modifications that were performed by the VNFM on an \"Individual VNF instance\" resource when changing the current VNF package. The \"ModificationsTriggeredByVnfPkgChange\" data type shall comply with the provisions defined in table 6.5.3.79-1.\n", + "type": "object", + "properties": { + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". 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.\n", + "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 the related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + } + } + }, + "changedCertificateInfo": { + "description": "Information about changed certificate, if applicable. See note\n", + "type": "array", + "items": { + "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": "Information for certificate profile.", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "securityPolicy": { + "description": "Information for security policy to be satisfied for certificate.", + "type": "array", + "items": { + "type": "object", + "description": "This type represents the input information related to certificate management.\n", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "maxValidityPeriod": { + "description": "A number as defined in IETF RFC 8259.\n", + "type": "number" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.\n", + "type": "string" + }, + "minimumKeyLength": { + "description": "A number as defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "cmfInfo": { + "type": "object", + "description": "This type provides input information related to CMF for certificate management\n", + "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.\n", + "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.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } + }, + "supportedProtocol": { + "type": "array", + "description": "Supported protocol by CMF instance. Permitted values:\n CMP\n CMPv2\n EST\n SCEP\n", + "minItems": 1, + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\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. \nNOTE : The CertificateDesc data type is defined in clause 7.1.19.2 of ETSI GS NFV IFA 011\n", + "type": "object", + "required": [ + "id", + "certficateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certficateDescId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "certificateType": { + "description": "Type of this certificate. Values: * VNFCI_CERT * VNFOAM_CERT\n", + "type": "string", + "enum": [ + "VNFCI_CERT", + "NFOAM_CERT" + ] + }, + "supportedCertificateManagement": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "version": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + }, + "serialNumber": { + "description": "Serial number of this certificate\n", + "type": "integer" + }, + "signatureAlgorithm": { + "description": "Algorithm of this certificate’s signature.\n", + "type": "string" + }, + "issuer": { + "description": "Issuer of this certificate.\n", + "type": "string" + }, + "notBefore": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notAfter": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "subject": { + "description": "Subject of this certificate.\n", + "type": "string" + }, + "publicKeyAlgorithm": { + "description": "Algorithm of this certificate’s public key\n", + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + } + } + } + } + } + } + } + }, + "affectedPnfs": { + "description": "Information about the PNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified PNFs. It shall comply with the provisions in Table 6.5.3.3-1.\n", + "type": "object", + "required": [ + "pnfId", + "pnfdId", + "pnfProfileId", + "cpInstanceId" + ], + "properties": { + "pnfId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "pnfdId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "pnfProfileId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "pnfName": { + "description": "Name of the PNF.\n", + "type": "string" + }, + "cpInstanceId": { + "description": "Identifier of the CP in the scope of the PNF.\n", + "type": "array", + "items": { + "description": "An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n", + "type": "string" + } + }, + "changeType": { + "description": "Signals the type of change. Permitted values: - ADD - REMOVE - MODIFY\n", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "MODIFY" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + } + } + } + }, + "affectedVls": { + "description": "Information about the VL instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VLs. NOTE: The resource handles of the affected NS link ports can be found by dereferencing the identifiers in the \"linkPortIds\" attribute.\n", + "type": "object", + "required": [ + "nsVirtualLinkInstanceId", + "nsVirtualLinkDescId", + "vlProfileId", + "changeType", + "changeResult" + ], + "properties": { + "nsVirtualLinkInstanceId": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + }, + "nsVirtualLinkDescId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "vlProfileId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADD * DELETE * MODIFY * ADD_LINK_PORT * REMOVE_LINK_PORT\n", + "type": "string", + "enum": [ + "ADD", + "DELETE", + "MODIFY", + "ADD_LINK_PORT", + "REMOVE_LINK_PORT" + ] + }, + "linkPortIds": { + "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references an \"NsLinkPortInfo\" structure.\nShall be set when changeType is equal to \"ADD_LINK_PORT\" or \"REMOVE_LINK_PORT\", and the related \"NsLinkPortInfo\" structures are present (case \"add\") or have been present (case \"remove\") in the \"NsVirtualLinkInfo\" structure that is represented by the \"virtualLink¬Info\" attribute in the \"NsInstance\" structure. See note.\n", + "type": "array", + "items": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + } + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: * COMPLETED * ROLLED_BACK * FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + } + } + } + }, + "affectedVnffgs": { + "description": "Information about the VNFFG instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified VNFFG instances. It shall comply with the provisions in Table 6.5.3.5-1.\n", + "type": "object", + "required": [ + "vnffgInstanceId", + "vnffgdId" + ], + "properties": { + "vnffgInstanceId": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + }, + "vnffgdId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: - ADD - DELETE - MODIFY\n", + "type": "string", + "enum": [ + "ADD", + "DELETE", + "MODIFY" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + } + } + } + }, + "affectedNss": { + "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified nested NSs. It shall comply with the provisions in Table 6.5.3.6-1.\n", + "type": "object", + "required": [ + "nsInstanceId", + "nsdId", + "changeType", + "changeResult" + ], + "properties": { + "nsInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "nsdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - INSTANTIATE - SCALE - UPDATE - HEAL - TERMINATE\n", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "INSTANTIATE", + "SCALE", + "UPDATE", + "HEAL", + "TERMINATE" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED - PARTIALLY_COMPLETED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED", + "PARTIALLY_COMPLETED" + ] + }, + "changedInfo": { + "description": "Information about the changed NS instance information, if applicable.\n", + "type": "object", + "properties": { + "wanConnectionInfoModifications": { + "description": "Information about the modified WAN related connectivity information, if applicable.\n", + "type": "array", + "items": { + "description": "This type represents attribute modifications that were performed on WAN connection information. The attributes that can be included consist of those requested to be modified explicitly with the \"UpdateNsRequest\" data structure. It shall comply with the provisions defined in table 6.5.3.93-1.\n", + "type": "object", + "required": [ + "wanConnectionInfoId" + ], + "properties": { + "wanConnectionInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "mscsName": { + "description": "If present, this attribute signals modifications of the \"mscsName\" attribute in \"MscsInfo\" as defined in clause 6.5.3.82.\n", + "type": "string" + }, + "mscsDescription": { + "description": "If present, this attribute signals modifications of the \"mscsDescription\" attribute in \"MscsInfo\" as defined in clause 6.5.3.82.\n", + "type": "string" + }, + "mscsEndpoints": { + "description": "If present, this attribute signals modifications of certain entries in the \"mscsEndpoints\" attribute array in \"MscsInfo\", as defined in clause 6.5.3.82.\n", + "type": "array", + "items": { + "description": "This type provides encapsulates information about an MSCS endpoint of the MSCS. It shall comply with the provisions defined in table 6.5.3.83-1.\n", + "type": "object", + "required": [ + "mscsEndpointId", + "directionality", + "connectivityServiceEndpoinId" + ], + "properties": { + "mscsEndpointId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "directionality": { + "description": "Directionality of the data traffic in the context of the terminating MSCS endpoint from WAN’s perspective. Permitted values: - INBOUND: to indicate into the WAN. - OUTBOUND: to indicate from the WAN. - BOTH: to indicate bidirectional data traffic to/from the WAN.\n", + "type": "string", + "enum": [ + "INBOUND", + "OUTBOUND", + "BOTH" + ] + }, + "connectivityServiceEndpoinId": { + "description": "References the connectivity service endpoint configuration information applicable to support the MSCS endpoint. More than one connectivity service endpoint can be referred when endpoints are in LAG mode.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + } + }, + "removeMscsEndpointIds": { + "description": "If present, this attribute signals the deletion of certain entries in the \"mscsEndpoints\" attribute array in \"MscsInfo\", as defined in clause 6.5.3.82.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "connectivityServiceEndpoints": { + "description": "If present, this attribute signals modifications of certain entries in the \"connectivityServiceEndpoints\" attribute array in \"WanConnectionProtocolInfo\", as defined in clause 6.5.3.91.\n", + "type": "array", + "items": { + "description": "This type provides configuration data for the NFVI-PoP network gateway providing connectivity service endpoints. The connectivity service endpoints are used as endpoints by an MSCS. It shall comply with the provisions defined in Table 6.5.3.84-1.\n", + "type": "object", + "required": [ + "connectivityServiceEndpointId", + "vimId" + ], + "properties": { + "connectivityServiceEndpointId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "siteToWanLayer2ProtocolData": { + "description": "This type provides information about Layer 2 protocol specific information for the configuration of the NFVI-PoP network gateway to enable the stitching of the intra-site VN to the MSCS over the WAN. It shall comply with the provisions defined in Table 6.5.3.85-1. NOTE: Either \"networkResources\" or \"vnSegmentsIds\" shall be provided, but not both.\n", + "type": "object", + "required": [ + "layer2ConnectionInfo" + ], + "properties": { + "layer2ConnectionInfo": { + "description": "Layer 2 protocol parameters of the connectivity service endpoint (CSE).\n", + "type": "object", + "required": [ + "connectionType", + "interfaceType", + "interfaceTagging", + "encapsulationType" + ], + "properties": { + "connectionType": { + "description": "The type of connection to be established on the connectivity service point. Permitted values: - CSE: defined by the characteristics of the existing referred connectivity service point. - AGGREGATE_CSE: create an aggregation of the connectivity service endpoints.\n", + "type": "string", + "enum": [ + "CSE", + "AGGREGATE_CSE" + ] + }, + "interfaceType": { + "description": "To indicate whether to create logical interfaces on the referred connectivity service endpoint or new aggregated connectivity service endpoint. Permitted values: - PARENT: use the mapped interface to the connectivity service endpoint as is, i.e., do not create logical interfaces. - LOGICAL: create logical interfaces.\n", + "type": "string", + "enum": [ + "PARENT", + "LOGICAL" + ] + }, + "interfaceTagging": { + "description": "The type of frames to forward on the connectivity service point. Permitted values: - UNTAGGED: an interface where frames are not tagged. - TAGGED: an interface configured to forward tagged frames (i.e., enabled for VLAN tagging).\n", + "type": "string", + "enum": [ + "UNTAGGED", + "TAGGED" + ] + }, + "encapsulationType": { + "description": "The type of encapsulation. If the interfaceTagging=\"TAGGED\", either \"VLAN\" or \"VXLAN\" shall be set. Permitted values: - ETH: generic Ethernet encapsulation. - VLAN: encapsulation based on VLAN. - VXLAN: encapsulation based on VXLAN.\n", + "type": "string", + "enum": [ + "ETH", + "VLAN", + "VXLAN" + ] + }, + "vlanTaggingType": { + "description": "Type of encapsulation method for VLAN tagging. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VLAN\". Permitted values: - DOT1Q: used when packets on the CSE are encapsulated with one or a set of customer VLAN identifiers. - QINQ: used when packets on the CSE are encapsulated with multiple customer VLAN identifiers and a single\n service VLAN identifier.\n- QINANY: used when packets on the CSE have no specific customer VLAN and a service VLAN identifier is used.\n", + "type": "string", + "enum": [ + "DOT1Q", + "QINQ", + "QINANY" + ] + }, + "wanSegmentIds": { + "description": "Segment identifiers to pass on the tagged interface. Shall be present if encapsulationType=\"VLAN\" or “VXLAN\".\n", + "type": "object", + "required": [ + "wanSegmentIdValue" + ], + "properties": { + "wanSegmentIdValue": { + "description": "Identifier of the network segment (e.g., VLAN id or VNI).\n", + "type": "string" + }, + "wanSegmentIdUpperRange": { + "description": "Identifier of the upper range network segment, in case the \"wanSegmentIds\" is used to define a range.\n", + "type": "string" + } + } + }, + "vxlanConfig": { + "description": "Additional configuration needed when using VXLAN encapsulation. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VXLAN\".\n", + "type": "object", + "required": [ + "peerMode" + ], + "properties": { + "peerMode": { + "description": "Type of VXLAN access mode. Default value is \"STATIC\".\nPermitted values: - STATIC - BGP_EVPN\n", + "type": "string", + "enum": [ + "STATIC", + "BGP_EVPN" + ] + }, + "peers": { + "description": "List of IP addresses of VTEP peers when using static mode.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + }, + "lagInterfaceData": { + "description": "Information for setting up a LAG interface aggregating multiple connectivity service endpoints.\n", + "type": "object", + "required": [ + "aggregatedEndpoints", + "lacpActivation", + "lacpConfig" + ], + "properties": { + "aggregatedEndpoints": { + "description": "List of the connectivity service endpoints that are to be aggregated. Shall be present if connectionType=\"AGGREGATE_CSE\". In case of aggregating connectivity service endpoints, only one SiteToWanLayer2ProtocolData shall be provided for the whole set of aggregated endpoints.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "lacpActivation": { + "description": "Indicates whether to activate LACP on the interface. If \"TRUE\", the LACP is to be activated, or \"FALSE\" otherwise. Default value is \"FALSE\".\n", + "type": "boolean" + }, + "lacpConfig": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "layer2ControlProtocol": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "mtuL2": { + "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 2 (in bytes). Default value is \"1500\" (bytes).\n", + "type": "number" + }, + "virtualRoutingAndForwarding": { + "description": "Configuration related to the L2 virtual routing and forwarding (MAC-VRF).\n", + "type": "object", + "required": [ + "macVrfName" + ], + "properties": { + "macVrfName": { + "description": "Name (or identifier) of the MAC-VRF instance.\n", + "type": "string" + } + } + }, + "forwardingConfig": { + "description": "Information related to the forwarding of the VN in the NFVI-PoP to the connectivity service endpoint, if information about the VN to \"stitch\" is already known. . by the OSS/BSS. Shall not be provided otherwise, in which case the NFVO will infer the forwarding configuration based on the NS VL, or external VL, or externally-managed VL provisioning.\n", + "type": "object", + "oneOf": [ + { + "required": [ + "networkResources" + ] + }, + { + "required": [ + "vnSegmentIds" + ] + } + ], + "properties": { + "networkResources": { + "description": "Reference to the VN resource to be forwarded into/from the MSCS. See note.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + } + }, + "vnSegmentIds": { + "description": "Identifiers of the network segments of the VN resources to be forwarded into/from the MSCS.\n", + "type": "object", + "required": [ + "vnSegmentIdValue" + ], + "properties": { + "vnSegmentIdValue": { + "description": "Identifier of the network segment.\n", + "type": "string" + }, + "vnSegmentIdUpperRange": { + "description": "Identifier of the upper range network segment, in case the \"vnSegmentIds\" is used to define a range.\n", + "type": "string" + } + } + } + } + } + } + }, + "siteToWanLayer3ProtocolData": { + "description": "This type provides information about Layer 3 protocol specific information for the stitching of the intra-site VN to the multi-site connectivity service over the WAN. It shall comply with the provisions defined in Table 6.5.3.86-1.\n", + "type": "object", + "required": [ + "routingInfo" + ], + "properties": { + "logicalInterfaceIpAddress": { + "description": "IP addressing information associated to a logical interface. Shall be present if the \"interfaceType\" of the SiteToWanLayer2ProtocolData is equal to \"LOGICAL\".\n", + "type": "object", + "required": [ + "ipAddress", + "associatedSegmentId" + ], + "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" + }, + "associatedSegmentId": { + "description": "The associated segment identifier that has triggered the creation of the logical interface. The value shall be one of the values listed in the \"wanSegmentIds\" of the \"siteToWanLayer2ProtocolData\".\n", + "type": "string" + } + } + }, + "routingInfo": { + "description": "The routing information that is activated on the connectivity service endpoint. More than one \"routingInfo\" is allowed to enable stacking different routing protocols (e.g., one routing protocol for IPv4 and another one for IPv6).\n", + "type": "object", + "required": [ + "routingProtocol", + "routingAddressFamily" + ], + "properties": { + "routingProtocol": { + "description": "The routing protocol that is activated on the connectivity service endpoint. Permitted values: - BGP: used for dynamic routing BGPv4. - RIP: used for dynamic routing RIPv2. - OSPF: used for dynamic routing (OSPF version 2 for IPv4; and OSPF version 3 for IPv6). - STATIC: used for static routing. - DIRECT: used when the NFVI-PoP network is directly connected to the WAN provider network. - VRRP: used when the NFVI-PoP network is directly connected to the WAN provider network with virtual\n router redundancy protocol support (VRRP).\n", + "type": "string", + "enum": [ + "BGP", + "RIP", + "OSPF", + "STATIC", + "DIRECT", + "VRRP" + ] + }, + "staticRouting": { + "description": "Defines a static route. It shall only be present if the routingProtocol=\"STATIC\".\n", + "type": "object", + "required": [ + "ipVersion", + "ipPrefix", + "prefixSize", + "nextHop" + ], + "properties": { + "ipVersion": { + "description": "The IP version applicable to the routing entry. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "ipPrefix": { + "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" + }, + "prefixSize": { + "description": "The IP prefix size.\n", + "type": "number" + }, + "nextHop": { + "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" + } + } + }, + "routingAddressFamily": { + "description": "The IP version applicable to the dynamic routing protocol. Shall be present for dynamic routing protocols. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPv6" + ] + }, + "ospfRouting": { + "description": "Defines parameters for OSPF routing. It shall only be present if the routingProtocol=\"OSPF\".\n", + "type": "object", + "required": [ + "areaId" + ], + "properties": { + "areaId": { + "description": "The routing area identifier, e.g., a number or an IP address.\n", + "type": "string" + } + } + }, + "bgpRouting": { + "description": "Defines parameters for BGP routing. It shall only be present if the routingProtocol=\"BGP\".\n", + "type": "object", + "required": [ + "bgpAs" + ], + "properties": { + "bgpAs": { + "description": "The Autonomous System (AS) identification applicable to the BGP routing info entry.\n", + "type": "object" + }, + "bgpNeighbour": { + "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" + }, + "bgpAdditionalParam": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "routeMapsDistribution": { + "description": "Maps of routes that are permitted or denied for redistribution.\n", + "type": "object", + "required": [ + "policy", + "sequence", + "matchAndSetRule" + ], + "properties": { + "policy": { + "description": "The policy to apply to the route distribution.\nPermitted values: - PERMIT - DENY\n", + "type": "string", + "enum": [ + "PERMIT", + "DENY" + ] + }, + "sequence": { + "description": "Sequence or index number assigned to the route-map.\n", + "type": "number" + }, + "matchAndSetRule": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + }, + "mtuL3": { + "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 3 (in bytes). Default value is \"1500\" (bytes).\n", + "type": "number" + }, + "virtualRoutingAndForwarding": { + "description": "Configuration related to the virtual routing and forwarding (VRF).\n", + "type": "object", + "required": [ + "vrfName" + ], + "properties": { + "vrfName": { + "description": "Name (or identifier) of the VRF instance.\n", + "type": "string" + } + } + }, + "bfdConfig": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + } + }, + "removeConnectivityServiceEndpoints": { + "description": "If present, this attribute signals the deletion of certain entries in the \"connectivityServiceEndpoints\" attribute array in \"WanConnectionProtocolInfo\", as defined in clause 6.5.3.91.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "affectedSaps": { + "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified SAP of a NS. It shall comply with the provisions in Table 6.5.3.7-1.\n", + "type": "object", + "required": [ + "sapInstanceId", + "sapdId" + ], + "properties": { + "sapInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "sapdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "sapName": { + "description": "Human readable name for the SAP.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - MODIFY\n", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "MODIFY" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + } + } + } + } + } + }, + "lcmCoordinations": { + "description": "Information about LCM coordination actions (see clause 12) related to this LCM operation occurrence.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "coordinationActionName", + "startTime", + "endpointType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "coordinationActionName": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "coordinationResult": { + "description": "The enumeration LcmCoordResultType defines the permitted values to represent the result \nof executing an LCM coordination action. The coordination result also implies the action \nto be performed by the NFVO as the follow-up to this coordination. The LcmCoordResultType \nshall comply with the provisions defined in table 12.5.4.3.-1.\n\n- CONTINUE: The related LCM operation shall be continued, staying in the state \"PROCESSING\".\n- ABORT: The related LCM operation shall be aborted by transitioning into the state \"FAILED_TEMP\".\n- CANCELLED: The coordination action has been cancelled upon request of the API consumer, \n i.e. the NFVO. The related LCM operation shall be aborted by transitioning into \n the state \"FAILED_TEMP\".\n", + "type": "string", + "enum": [ + "CONTINUE", + "ABORT", + "CACELLED" + ] + }, + "startTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endpointType": { + "description": "The endpoint type used by this coordination action. Valid values: - MGMT: coordination with other operation supporting management systems (e.g. OSS/BSS)\n", + "type": "string", + "enum": [ + "MGMT" + ] + }, + "delay": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + } + } + } + }, + "rejectedLcmCoordinations": { + "description": "Information about LCM coordination actions (see clause 12) that were rejected by 503 error which means they can be tried again after a delay. See note 3.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "coordinationActionName", + "rejectionTime", + "endpointType", + "delay" + ], + "properties": { + "coordinationActionName": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "rejectionTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endpointType": { + "description": "The endpoint type used by this coordination action. Valid values: - MGMT: coordination with other operation supporting management systems (e.g. OSS/BSS)\n", + "type": "string", + "enum": [ + "MGMT" + ] + }, + "delay": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + } + } + } + }, + "warnings": { + "description": "Warning messages that were generated while the operation was executing.\nIf the operation has included VNF LCM operations or NS LCM coordination actions and these have resulted in warnings, such warnings should be added to this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "nsInstance" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "nsInstance": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "cancel": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "retry": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "rollback": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "continue": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "fail": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } + } + } } \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOccs.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOccs.schema.json index 5fddcf89..53e954f4 100644 --- a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOccs.schema.json +++ b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOccs.schema.json @@ -1,1189 +1,1961 @@ { - "type": "array", - "items": - { - "description": "This type represents a request a NS lifecycle operation occurrence. It shall comply with the provisions defined in Table 6.5.2.3-1.\nNOTE 1:\tThis allows the OSS/BSS to obtain a copy of the latest \"result\" notification if it has not received it due to an error. If the notification represents the successful result of a lifecycle operation, at least an affectedVnf, or affectedPnf, or affectedVl, or affectedVnffg or affectedNs, or affectedSap shall be present.\nNOTE 2:\tA coordination action has timed out if the NFVO has not been able to read the \"Individual coordination action\" resource within a timeout interval after requesting the coordination to be started or to be cancelled. The length of the timeout interval is defined by means outside the scope of the present document\nNOTE 3:\tThe list of rejected coordinations may be garbage collected if the LCM operation occurrence has reached a terminal state, i.e. one of \"COMPLETED\", \"FAILED\", PARTIALLY COMPLETED and \"ROLLED_BACK\".\n", - "type": "object", - "required": ["id", "operationState", "statusEnteredTime", "nsInstanceId", "lcmOperationType", "startTime", "isAutomaticInvocation", "isCancelPending", "_links"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "operationState": { - "description": "The enumeration NsLcmOperationStateType shall comply with the provisions defined in Table 6.5.4.4-1. Value | Description ------|------------ PROCESSING | The LCM operation is currently in execution. COMPLETED | The LCM operation has been completed successfully. PARTIALLY_COMPLETED | The LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. OLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n", - "type": "string", - "enum": ["PROCESSING", "COMPLETED", "FAILED_TEMP", "FAILED", "ROLLING_BACK", "ROLLED_BACK"] - }, - "stateEnteredTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "nsInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "lcmOperationType": { - "description": "The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n", - "type": "string", - "enum": ["INSTANTIATE", "SCALE", "UPDATE", "TERMINATE", "HEAL"] - }, - "startTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "isAutomaticInvocation": { - "description": "Set to true if this NS LCM operation occurrence has been automatically triggered by the NFVO. This occurs in the case of auto-scaling, auto-healing and when a nested NS is modified as a result of an operation on its composite NS. Set to false otherwise.\n", - "type": "boolean" - }, - "operationParams": { - "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 6.7 shall apply. The following mapping between lcmOperationType and the data type of this attribute shall apply: - INSTANTIATE: InstantiateNsRequest - SCALE: ScaleNsRequest - UPDATE: UpdateNsRequest - HEAL: HealNsRequest - TERMINATE: TerminateNsRequest This attribute shall be present if this data type is returned in a response to reading an individual resource, and may be present according to the chosen attribute selector parameter if this data type is returned in a response to a query of a container resource.\n", - "type": "string", - "enum": ["INSTANTIATE", "SCALE", "UPDATE", "HEAL", "TERMINATE"] - }, - "isCancelPending": { - "description": "If the LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false.\n", - "type": "boolean" - }, - "cancelMode": { - "description": "Cancellation mode.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, and shall wait for the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, to finish execution or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, shall cancel the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, and shall wait for the cancellation to finish or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\n", - "type": "string", - "enum": ["GRACEFUL", "FORCEFUL"] - }, - "error": { - "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", - "type": "object", - "required": ["status", "detail"], - "properties": { - "type": { - "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", - "type": "string", - "format": "URI" - }, - "title": { - "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", - "type": "string" - }, - "status": { - "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", - "type": "integer" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem.\n", - "type": "string" - }, - "instance": { - "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", - "type": "string", - "format": "URI" - } - } - }, - "resourceChanges": { - "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable\n", - "type": "object", - "properties": { - "affectedVnfs": { - "description": "Information about the VNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified VNFs.\nNOTE:\tAt least one of the attributes \"changedVnfInfo\", \"changedExtConnectivity\" or \"modificationsTriggeredByVnfPkgChange\" shall be present. Not more than one of \"changedVnfInfo\" and \"modificationsTriggeredByVnfPkgChange\" shall be present.\n", - "type": "object", - "required": ["vnfInstanceId", "vnfdId", "vnfProfileId", "vnfName", "changeType", "changeResult"], - "anyOf": [{ - "required": ["changedExtConnectivity"] - }, { - "oneOf": [{ - "required": ["changedVnfInfo"] - }, { - "required": ["modificationsTriggeredByVnfPkgChange"] - }] - }], - "properties": { - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProfileId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "vnfName": { - "description": "Name of the VNF Instance.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change Permitted values: - ADD - REMOVE - INSTANTIATE - TERMINATE - SCALE - CHANGE_FLAVOUR - HEAL - OPERATE - MODIFY_INFORMATION - CHANGE_EXTERNAL_VNF_CONNECTIVITY -\tCHANGE_VNFPKG\n", - "type": "string", - "enum": ["ADD", "REMOVE", "INSTANTIATE", "TERMINATE", "SCALE", "CHANGE_FLAVOUR", "HEAL", "OPERATE", "MODIFY_INFORMATION", "CHANGE_EXTERNAL_VNF_CONNECTIVITY", "CHANGE_VNFPKG"] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", - "type": "string", - "enum": ["COMPLETED", "ROLLED_BACK", "FAILED"] - }, - "changedInfo": { - "description": "Information about the changed VNF instance information, including VNF configurable properties,if applicable. When the \"changedInfo\" attribute is present, either the \"changedVnfInfo\" attribute or the \"changedExtConnectivity\" attribute or both shall be present.\n", - "type": "object", - "anyOf": [{ - "required": ["changedVnfInfo"] - }, { - "required": ["changedVnfInfo"] - }, { - "required": ["modificationsTriggeredByVnfPkgChange"] - }], - "oneOf": [{ - "required": ["changedVnfInfo"] - }, { - "required": ["modificationsTriggeredByVnfPkgChange"] - }], - "properties": { - "changedVnfInfo": { - "description": "This type represents the information that is requested to be modified for a VNF instance. The information to be modified shall comply with the associated NSD. EXAMPLE. The vnfPkgId attribute value for a particular VNF instance can only be updated with a value that matches the identifier value of a VNF package whose vnfdId is present in the associated profile of the NSD.\n", - "type": "object", - "required": ["vnfInstanceId"], - "properties": { - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstanceName": { - "description": "New value of the \"vnfInstanceName\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "New value of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "changedExtConnectivity": { - "description": "Information about changed external connectivity, if applicable. Only information about external VL instances that have been added or modified shall be provided. See note.\n", - "type": "array", - "items": { - "type": "object", - "required": ["id", "resourceHandle"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM. NOTE: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "object", - "required": ["resourceId"], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. See note.\n", - "type": "string" - } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. NOTE 1:\tThe 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:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", - "type": "object", - "required": ["id", "resourceHandle"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM. NOTE: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "object", - "required": ["resourceId"], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. See note.\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "secondaryCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - } - } - } - }, - "currentVnfExtCpData": { - "description": "This type represents configuration information for external CPs created from a CPD.\nNOTE 1:\tIn 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: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure. NOTE 3: \tWithin 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.\n", - "type": "object", - "required": ["cpdId"], - "properties": { - "cpdId": { - "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", - "type": "string" - }, - "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is 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). See note 2 and note 3.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL. NOTE 1:\tThe following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\":\n -\tAt least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for\n an external CP instance representing a subport that is to be created, or an external CP instance\n that is to be created by creating the corresponding VNFC or VNF instance during the current or\n a subsequent LCM operation, or for an existing external CP instance that is to be re-configured\n or added to a particular external virtual link.\n -\tIf the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided\n referencing a pre-created link port with pre-configured address information.\n -\tIf both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that\n the cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\nNOTE 2:\tIn case the NFVO manages its own identifier space, the NFVO may remap this identifier when communicating with the VNFM. If the NFVO knows that there can be an identifier collision when communicating with the VNFM by using the identifier from the OSS/BSS, the NFVO shall remap it.\n", - "type": "object", - "anyOf": [{ - "required": ["linkPortId"] - }, { - "required": ["cpProtocolData"] - }], - "properties": { - "parentCpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "linkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "createExtLinkPort": { - "description": "Indicates the need to create a dedicated link port for the external CP. If set to True, a link port is created. If set to False, no link port is created. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", - "type": "boolean" - }, - "cpProtocolData": { - "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See note 1.\n", - "type": "array", - "items": { - "description": "This type represents network protocol data.\n", - "type": "object", - "required": ["layerProtocol"], - "properties": { - "layerProtocol": { - "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n", - "type": "string", - "enum": ["IP_OVER_ETHERNET"] - }, - "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. NOTE 3:\tIf the CP instance represents a subport in a trunk, \"segmentationId\" shall be present. Otherwise it shall not be present. NOTE 4:\tDepending 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.\n", - "type": "object", - "anyOf": [{ - "required": ["ipAddresses"] - }, { - "required": ["macAddress"] - }], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values are: -\tVLAN: The subport uses VLAN as encapsulation type. -\tINHERIT: The subport gets its segmentation type from the network it is connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", - "type": "string", - "enum": ["VLAN", "INHERIT"] - }, - "segmentationId": { - "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", - "type": "array", - "items": { - "type": "object", - "required": ["type"], - "oneOf": [{ - "required": ["fixedAddresses"] - }, { - "required": ["numDynamicAddresses"] - }, { - "required": ["addressRange"] - }], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4\n - IPV6\n", - "type": "string", - "enum": ["IPV4", "IPV6"] - }, - "fixedAddresses": { - "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "numDynamicAddresses": { - "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "integer" - }, - "addressRange": { - "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", - "type": "object", - "required": ["minAddress", "maxAddress"], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - }, - "modificationsTriggeredByVnfPkgChange": { - "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation. The \"ModificationsTriggeredByVnfPkgChange\" data type shall comply with the provisions defined in table 6.5.3.79-1.\n", - "type": "object", - "properties": { - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". 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.\n", - "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 the related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A Version. Representation: string of variable length.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A Version. Representation: string of variable length.\n", - "type": "string" - } - } - } - } - } - } - } - }, - "affectedPnfs": { - "description": "Information about the PNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified PNFs. It shall comply with the provisions in Table 6.5.3.3-1.\n", - "type": "object", - "required": ["pnfId", "pnfdId", "pnfProfileId", "cpInstanceId"], - "properties": { - "pnfId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "pnfdId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "pnfProfileId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "pnfName": { - "description": "Name of the PNF.\n", - "type": "string" - }, - "cpInstanceId": { - "description": "Identifier of the CP in the scope of the PNF.\n", - "type": "array", - "items": { - "description": "An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n", - "type": "string" - } - }, - "changeType": { - "description": "Signals the type of change. Permitted values: - ADD - REMOVE - MODIFY\n", - "type": "string", - "enum": ["ADD", "REMOVE", "MODIFY"] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", - "type": "string", - "enum": ["COMPLETED", "ROLLED_BACK", "FAILED"] - } - } - } - }, - "affectedVls": { - "description": "Information about the VL instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary VLs. NOTE:\tThe resource handles of the affected NS link ports can be found by dereferencing the identifiers in the \"linkPortIds\" attribute.\n", - "type": "object", - "required": ["nsVirtualLinkInstanceId", "nsVirtualLinkDescId", "vlProfileId", "changeType", "changeResult"], - "properties": { - "nsVirtualLinkInstanceId": { - "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", - "type": "string" - }, - "nsVirtualLinkDescId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "vlProfileId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADD * DELETE * MODIFY * ADD_LINK_PORT * REMOVE_LINK_PORT\n", - "type": "string", - "enum": ["ADD", "DELETE", "MODIFY", "ADD_LINK_PORT", "REMOVE_LINK_PORT"] - }, - "linkPortIds": { - "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references an \"NsLinkPortInfo\" structure.\nShall be set when changeType is equal to \"ADD_LINK_PORT\" or \"REMOVE_LINK_PORT\", and the related \"NsLinkPortInfo\" structures are present (case \"add\") or have been present (case \"remove\") in the \"NsVirtualLinkInfo\" structure that is represented by the \"virtualLinkInfo\" attribute in the \"NsInstance\" structure. See note.\n", - "type": "array", - "items": { - "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", - "type": "string" - } - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: * COMPLETED * ROLLED_BACK * FAILED\n", - "type": "string", - "enum": ["COMPLETED", "ROLLED_BACK", "FAILED"] - } - } - } - }, - "affectedVnffgs": { - "description": "Information about the VNFFG instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified VNFFG instances. It shall comply with the provisions in Table 6.5.3.5-1.\n", - "type": "object", - "required": ["vnffgInstanceId", "vnffgdId"], - "properties": { - "vnffgInstanceId": { - "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", - "type": "string" - }, - "vnffgdId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: - ADD - DELETE - MODIFY\n", - "type": "string", - "enum": ["ADD", "DELETE", "MODIFY"] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", - "type": "string", - "enum": ["COMPLETED", "ROLLED_BACK", "FAILED"] - } - } - } - }, - "affectedNss": { - "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified nested NSs. It shall comply with the provisions in Table 6.5.3.6-1.\n", - "type": "object", - "required": ["nsInstanceId", "nsdId", "changeType", "changeResult"], - "properties": { - "nsInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "nsdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - INSTANTIATE - SCALE - UPDATE - HEAL - TERMINATE\n", - "type": "string", - "enum": ["ADD", "REMOVE", "INSTANTIATE", "SCALE", "UPDATE", "HEAL", "TERMINATE"] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED - PARTIALLY_COMPLETED\n", - "type": "string", - "enum": ["COMPLETED", "ROLLED_BACK", "FAILED", "PARTIALLY_COMPLETED"] - }, - "changedInfo": { - "description": "Information about the changed NS instance information, if applicable.\n", - "type": "object", - "properties": { - "wanConnectionInfoModifications": { - "description": "Information about the modified WAN related connectivity information, if applicable.\n", - "type": "array", - "items": { - "description": "This type represents attribute modifications that were performed on WAN connection information. The attributes that can be included consist of those requested to be modified explicitly with the \"UpdateNsRequest\" data structure. It shall comply with the provisions defined in table 6.5.3.93-1.\n", - "type": "object", - "required": ["wanConnectionInfoId"], - "properties": { - "wanConnectionInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "mscsName": { - "description": "If present, this attribute signals modifications of the \"mscsName\" attribute in \"MscsInfo\" as defined in clause 6.5.3.82.\n", - "type": "string" - }, - "mscsDescription": { - "description": "If present, this attribute signals modifications of the \"mscsDescription\" attribute in \"MscsInfo\" as defined in clause 6.5.3.82.\n", - "type": "string" - }, - "mscsEndpoints": { - "description": "If present, this attribute signals modifications of certain entries in the \"mscsEndpoints\" attribute array in \"MscsInfo\", as defined in clause 6.5.3.82.\n", - "type": "array", - "items": { - "description": "This type provides encapsulates information about an MSCS endpoint of the MSCS. It shall comply with the provisions defined in table 6.5.3.83-1.\n", - "type": "object", - "required": ["mscsEndpointId", "directionality", "connectivityServiceEndpoinId"], - "properties": { - "mscsEndpointId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "directionality": { - "description": "Directionality of the data traffic in the context of the terminating MSCS endpoint from WANs perspective. Permitted values: -\tINBOUND: to indicate into the WAN. -\tOUTBOUND: to indicate from the WAN. -\tBOTH: to indicate bidirectional data traffic to/from the WAN.\n", - "type": "string", - "enum": ["INBOUND", "OUTBOUND", "BOTH"] - }, - "connectivityServiceEndpoinId": { - "description": "References the connectivity service endpoint configuration information applicable to support the MSCS endpoint. More than one connectivity service endpoint can be referred when endpoints are in LAG mode.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - } - }, - "removeMscsEndpointIds": { - "description": "If present, this attribute signals the deletion of certain entries in the \"mscsEndpoints\" attribute array in \"MscsInfo\", as defined in clause 6.5.3.82.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "connectivityServiceEndpoints": { - "description": "If present, this attribute signals modifications of certain entries in the \"connectivityServiceEndpoints\" attribute array in \"WanConnectionProtocolInfo\", as defined in clause 6.5.3.91.\n", - "type": "array", - "items": { - "description": "This type provides configuration data for the NFVI-PoP network gateway providing connectivity service endpoints. The connectivity service endpoints are used as endpoints by an MSCS. It shall comply with the provisions defined in Table 6.5.3.84-1.\n", - "type": "object", - "required": ["connectivityServiceEndpointId", "vimId"], - "properties": { - "connectivityServiceEndpointId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "siteToWanLayer2ProtocolData": { - "description": "This type provides information about Layer 2 protocol specific information for the configuration of the NFVI-PoP network gateway to enable the stitching of the intra-site VN to the MSCS over the WAN. It shall comply with the provisions defined in Table 6.5.3.85-1. NOTE:\tEither \"networkResources\" or \"vnSegmentsIds\" shall be provided, but not both.\n", - "type": "object", - "required": ["layer2ConnectionInfo"], - "properties": { - "layer2ConnectionInfo": { - "description": "Layer 2 protocol parameters of the connectivity service endpoint (CSE).\n", - "type": "object", - "required": ["connectionType", "interfaceType", "interfaceTagging", "encapsulationType"], - "properties": { - "connectionType": { - "description": "The type of connection to be established on the connectivity service point. Permitted values: -\tCSE: defined by the characteristics of the existing referred connectivity service point. -\tAGGREGATE_CSE: create an aggregation of the connectivity service endpoints.\n", - "type": "string", - "enum": ["CSE", "AGGREGATE_CSE"] - }, - "interfaceType": { - "description": "To indicate whether to create logical interfaces on the referred connectivity service endpoint or new aggregated connectivity service endpoint. Permitted values: -\tPARENT: use the mapped interface to the connectivity service endpoint as is, i.e., do not create logical interfaces. -\tLOGICAL: create logical interfaces.\n", - "type": "string", - "enum": ["PARENT", "LOGICAL"] - }, - "interfaceTagging": { - "description": "The type of frames to forward on the connectivity service point. Permitted values: -\tUNTAGGED: an interface where frames are not tagged. -\tTAGGED: an interface configured to forward tagged frames (i.e., enabled for VLAN tagging).\n", - "type": "string", - "enum": ["UNTAGGED", "TAGGED"] - }, - "encapsulationType": { - "description": "The type of encapsulation. If the interfaceTagging=\"TAGGED\", either \"VLAN\" or \"VXLAN\" shall be set. Permitted values: -\tETH: generic Ethernet encapsulation. -\tVLAN: encapsulation based on VLAN. -\tVXLAN: encapsulation based on VXLAN.\n", - "type": "string", - "enum": ["ETH", "VLAN", "VXLAN"] - }, - "vlanTaggingType": { - "description": "Type of encapsulation method for VLAN tagging. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VLAN\". Permitted values: -\tDOT1Q: used when packets on the CSE are encapsulated with one or a set of customer VLAN identifiers. -\tQINQ: used when packets on the CSE are encapsulated with multiple customer VLAN identifiers and a single\n service VLAN identifier.\n- QINANY: used when packets on the CSE have no specific customer VLAN and a service VLAN identifier is used.\n", - "type": "string", - "enum": ["DOT1Q", "QINQ", "QINANY"] - }, - "wanSegmentIds": { - "description": "Segment identifiers to pass on the tagged interface. Shall be present if encapsulationType=\"VLAN\" or VXLAN\".\n", - "type": "object", - "required": ["wanSegmentIdValue"], - "properties": { - "wanSegmentIdValue": { - "description": "Identifier of the network segment (e.g., VLAN id or VNI).\n", - "type": "string" - }, - "wanSegmentIdUpperRange": { - "description": "Identifier of the upper range network segment, in case the \"wanSegmentIds\" is used to define a range.\n", - "type": "string" - } - } - }, - "vxlanConfig": { - "description": "Additional configuration needed when using VXLAN encapsulation. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VXLAN\".\n", - "type": "object", - "required": ["peerMode"], - "properties": { - "peerMode": { - "description": "Type of VXLAN access mode. Default value is \"STATIC\".\nPermitted values: -\tSTATIC -\tBGP_EVPN\n", - "type": "string", - "enum": ["STATIC", "BGP_EVPN"] - }, - "peers": { - "description": "List of IP addresses of VTEP peers when using static mode.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - } - }, - "lagInterfaceData": { - "description": "Information for setting up a LAG interface aggregating multiple connectivity service endpoints.\n", - "type": "object", - "required": ["aggregatedEndpoints", "lacpActivation", "lacpConfig"], - "properties": { - "aggregatedEndpoints": { - "description": "List of the connectivity service endpoints that are to be aggregated. Shall be present if connectionType=\"AGGREGATE_CSE\". In case of aggregating connectivity service endpoints, only one SiteToWanLayer2ProtocolData shall be provided for the whole set of aggregated endpoints.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "lacpActivation": { - "description": "Indicates whether to activate LACP on the interface. If \"TRUE\", the LACP is to be activated, or \"FALSE\" otherwise. Default value is \"FALSE\".\n", - "type": "boolean" - }, - "lacpConfig": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "layer2ControlProtocol": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "mtuL2": { - "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 2 (in bytes). Default value is \"1500\" (bytes).\n", - "type": "number" - }, - "virtualRoutingAndForwarding": { - "description": "Configuration related to the L2 virtual routing and forwarding (MAC-VRF).\n", - "type": "object", - "required": ["macVrfName"], - "properties": { - "macVrfName": { - "description": "Name (or identifier) of the MAC-VRF instance.\n", - "type": "string" - } - } - }, - "forwardingConfig": { - "description": "Information related to the forwarding of the VN in the NFVI-PoP to the connectivity service endpoint, if information about the VN to \"stitch\" is already known. . by the OSS/BSS. Shall not be provided otherwise, in which case the NFVO will infer the forwarding configuration based on the NS VL, or external VL, or externally-managed VL provisioning.\n", - "type": "object", - "oneOf": [{ - "required": ["networkResources"] - }, { - "required": ["vnSegmentIds"] - }], - "properties": { - "networkResources": { - "description": "Reference to the VN resource to be forwarded into/from the MSCS. See note.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM. NOTE: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle.\n", - "type": "object", - "required": ["resourceId"], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM, the WIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. See note.\n", - "type": "string" - } - } - } - }, - "vnSegmentIds": { - "description": "Identifiers of the network segments of the VN resources to be forwarded into/from the MSCS.\n", - "type": "object", - "required": ["vnSegmentIdValue"], - "properties": { - "vnSegmentIdValue": { - "description": "Identifier of the network segment.\n", - "type": "string" - }, - "vnSegmentIdUpperRange": { - "description": "Identifier of the upper range network segment, in case the \"vnSegmentIds\" is used to define a range.\n", - "type": "string" - } - } - } - } - } - } - }, - "siteToWanLayer3ProtocolData": { - "description": "This type provides information about Layer 3 protocol specific information for the stitching of the intra-site VN to the multi-site connectivity service over the WAN. It shall comply with the provisions defined in Table 6.5.3.86-1.\n", - "type": "object", - "required": ["routingInfo"], - "properties": { - "logicalInterfaceIpAddress": { - "description": "IP addressing information associated to a logical interface. Shall be present if the \"interfaceType\" of the SiteToWanLayer2ProtocolData is equal to \"LOGICAL\".\n", - "type": "object", - "required": ["ipAddress", "associatedSegmentId"], - "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" - }, - "associatedSegmentId": { - "description": "The associated segment identifier that has triggered the creation of the logical interface. The value shall be one of the values listed in the \"wanSegmentIds\" of the \"siteToWanLayer2ProtocolData\".\n", - "type": "string" - } - } - }, - "routingInfo": { - "description": "The routing information that is activated on the connectivity service endpoint. More than one \"routingInfo\" is allowed to enable stacking different routing protocols (e.g., one routing protocol for IPv4 and another one for IPv6).\n", - "type": "object", - "required": ["routingProtocol", "routingAddressFamily"], - "properties": { - "routingProtocol": { - "description": "The routing protocol that is activated on the connectivity service endpoint. Permitted values: -\tBGP: used for dynamic routing BGPv4. -\tRIP: used for dynamic routing RIPv2. -\tOSPF: used for dynamic routing (OSPF version 2 for IPv4; and OSPF version 3 for IPv6). -\tSTATIC: used for static routing. -\tDIRECT: used when the NFVI-PoP network is directly connected to the WAN provider network. -\tVRRP: used when the NFVI-PoP network is directly connected to the WAN provider network with virtual\n router redundancy protocol support (VRRP).\n", - "type": "string", - "enum": ["BGP", "RIP", "OSPF", "STATIC", "DIRECT", "VRRP"] - }, - "staticRouting": { - "description": "Defines a static route. It shall only be present if the routingProtocol=\"STATIC\".\n", - "type": "object", - "required": ["ipVersion", "ipPrefix", "prefixSize", "nextHop"], - "properties": { - "ipVersion": { - "description": "The IP version applicable to the routing entry. Permitted values: -\tIPV4 -\tIPV6\n", - "type": "string", - "enum": ["IPV4", "IPV6"] - }, - "ipPrefix": { - "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" - }, - "prefixSize": { - "description": "The IP prefix size.\n", - "type": "number" - }, - "nextHop": { - "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" - } - } - }, - "routingAddressFamily": { - "description": "The IP version applicable to the dynamic routing protocol. Shall be present for dynamic routing protocols. Permitted values: -\tIPV4 -\tIPV6\n", - "type": "string", - "enum": ["IPV4", "IPv6"] - }, - "ospfRouting": { - "description": "Defines parameters for OSPF routing. It shall only be present if the routingProtocol=\"OSPF\".\n", - "type": "object", - "required": ["areaId"], - "properties": { - "areaId": { - "description": "The routing area identifier, e.g., a number or an IP address.\n", - "type": "string" - } - } - }, - "bgpRouting": { - "description": "Defines parameters for BGP routing. It shall only be present if the routingProtocol=\"BGP\".\n", - "type": "object", - "required": ["bgpAs"], - "properties": { - "bgpAs": { - "description": "The Autonomous System (AS) identification applicable to the BGP routing info entry.\n", - "type": "object" - }, - "bgpNeighbour": { - "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" - }, - "bgpAdditionalParam": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "routeMapsDistribution": { - "description": "Maps of routes that are permitted or denied for redistribution.\n", - "type": "object", - "required": ["policy", "sequence", "matchAndSetRule"], - "properties": { - "policy": { - "description": "The policy to apply to the route distribution.\nPermitted values: -\tPERMIT -\tDENY\n", - "type": "string", - "enum": ["PERMIT", "DENY"] - }, - "sequence": { - "description": "Sequence or index number assigned to the route-map.\n", - "type": "number" - }, - "matchAndSetRule": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - } - } - }, - "mtuL3": { - "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 3 (in bytes). Default value is \"1500\" (bytes).\n", - "type": "number" - }, - "virtualRoutingAndForwarding": { - "description": "Configuration related to the virtual routing and forwarding (VRF).\n", - "type": "object", - "required": ["vrfName"], - "properties": { - "vrfName": { - "description": "Name (or identifier) of the VRF instance.\n", - "type": "string" - } - } - }, - "bfdConfig": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - } - } - } - }, - "removeConnectivityServiceEndpoints": { - "description": "If present, this attribute signals the deletion of certain entries in the \"connectivityServiceEndpoints\" attribute array in \"WanConnectionProtocolInfo\", as defined in clause 6.5.3.91.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "affectedSaps": { - "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified SAP of a NS. It shall comply with the provisions in Table 6.5.3.7-1.\n", - "type": "object", - "required": ["sapInstanceId", "sapdId"], - "properties": { - "sapInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "sapdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "sapName": { - "description": "Human readable name for the SAP.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - MODIFY\n", - "type": "string", - "enum": ["ADD", "REMOVE", "MODIFY"] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", - "type": "string", - "enum": ["COMPLETED", "ROLLED_BACK", "FAILED"] - } - } - } - } - } - }, - "lcmCoordinations": { - "description": "Information about LCM coordination actions (see clause 12) related to this LCM operation occurrence.\n", - "type": "array", - "items": { - "type": "object", - "required": ["id", "coordinationActionName", "startTime", "endpointType"], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "coordinationActionName": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "coordinationResult": { - "description": "The enumeration LcmCoordResultType defines the permitted values to represent the result\nof executing an LCM coordination action. The coordination result also implies the action\nto be performed by the NFVO as the follow-up to this coordination. The LcmCoordResultType\nshall comply with the provisions defined in table 12.5.4.3.-1.\n\n- CONTINUE: The related LCM operation shall be continued, staying in the state \"PROCESSING\".\n- ABORT: The related LCM operation shall be aborted by transitioning into the state \"FAILED_TEMP\".\n- CANCELLED: The coordination action has been cancelled upon request of the API consumer, i.e. the NFVO. The related LCM operation shall be aborted by transitioning into \n the state \"FAILED_TEMP\".\n", - "type": "string", - "enum": ["CONTINUE", "ABORT", "CACELLED"] - }, - "startTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "endTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: -\tMGMT: coordination with other operation supporting management systems (e.g. OSS/BSS)\n", - "type": "string", - "enum": ["MGMT"] - }, - "delay": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - } - } - } - }, - "rejectedLcmCoordinations": { - "description": "Information about LCM coordination actions (see clause 12) that were rejected by 503 error which means they can be tried again after a delay. See note 3.\n", - "type": "array", - "items": { - "type": "object", - "required": ["coordinationActionName", "rejectionTime", "endpointType", "delay"], - "properties": { - "coordinationActionName": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "rejectionTime": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - }, - "endpointType": { - "description": "The endpoint type used by this coordination action. Valid values: -\tMGMT: coordination with other operation supporting management systems (e.g. OSS/BSS)\n", - "type": "string", - "enum": ["MGMT"] - }, - "delay": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "format": "date-time" - } - } - } - }, - "warnings": { - "description": "Warning messages that were generated while the operation was executing.\nIf the operation has included VNF LCM operations or NS LCM coordination actions and these have resulted in warnings, such warnings should be added to this attribute.\n", - "type": "array", - "items": { - "type": "string" - } - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": ["self", "nsInstance"], - "properties": { - "self": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "nsInstance": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "cancel": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "retry": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "rollback": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "continue": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "fail": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": ["href"], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - } - } - } - } - } + "type": "array", + "items": { + "description": "This type represents a request a NS lifecycle operation occurrence. It shall comply with the provisions defined in Table 6.5.2.3-1.\nNOTE 1: This allows the OSS/BSS to obtain a copy of the latest \"result\" notification if it has not received it due to an error. If the notification represents the successful result of a lifecycle operation, at least an affectedVnf, or affectedPnf, or affectedVl, or affectedVnffg or affectedNs, or affectedSap shall be present.\nNOTE 2: A coordination action has timed out if the NFVO has not been able to read the \"Individual coordination action\" resource within a timeout interval after requesting the coordination to be started or to be cancelled. The length of the timeout interval is defined by means outside the scope of the present document\nNOTE 3: The list of rejected coordinations may be garbage collected if the LCM operation occurrence has reached a terminal state, i.e. one of \"COMPLETED\", \"FAILED\", “PARTIALLY COMPLETED” and \"ROLLED_BACK\".\n", + "type": "object", + "required": [ + "id", + "operationState", + "statusEnteredTime", + "nsInstanceId", + "lcmOperationType", + "startTime", + "isAutomaticInvocation", + "isCancelPending", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operationState": { + "description": "Value | Description ------|------------ PROCESSING | The NS LCM operation is currently in execution. COMPLETED | The NS LCM operation has been completed successfully. PARTIALLY_COMPLETED | The NS LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The NS LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The NS LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action will not succeed. OLLING_BACK | The NS LCM operation is currently being rolled back. ROLLED_BACK | The NS LCM operation has been successfully rolled back, i.e. The state of the NS prior to the original operation invocation has been restored as closely as possible.\n", + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED_TEMP", + "FAILED", + "ROLLING_BACK", + "ROLLED_BACK" + ] + }, + "stateEnteredTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "nsInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "lcmOperationType": { + "description": "The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "UPDATE", + "TERMINATE", + "HEAL" + ] + }, + "startTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "isAutomaticInvocation": { + "description": "Set to true if this NS LCM operation occurrence has been automatically triggered by the NFVO. This occurs in the case of auto-scaling, auto-healing and when a nested NS is modified as a result of an operation on its composite NS. Set to false otherwise.\n", + "type": "boolean" + }, + "operationParams": { + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 6.7 shall apply. The following mapping between lcmOperationType and the data type of this attribute shall apply: - INSTANTIATE: InstantiateNsRequest - SCALE: ScaleNsRequest - UPDATE: UpdateNsRequest - HEAL: HealNsRequest - TERMINATE: TerminateNsRequest This attribute shall be present if this data type is returned in a response to reading an individual resource, and may be present according to the chosen attribute selector parameter if this data type is returned in a response to a query of a container resource.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "UPDATE", + "HEAL", + "TERMINATE" + ] + }, + "isCancelPending": { + "description": "If the LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false.\n", + "type": "boolean" + }, + "cancelMode": { + "description": "Cancellation mode.\nIf the NS LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the NFVO shall not start any new VNF lifecycle management and resource management operation, and shall wait for the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, to finish execution or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\nIf the NS LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the NFVO shall not start any new VNF lifecycle management and resource management operation, shall cancel the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, and shall wait for the cancellation to finish or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\n", + "type": "string", + "enum": [ + "GRACEFUL", + "FORCEFUL" + ] + }, + "error": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + }, + "resourceChanges": { + "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable\n", + "type": "object", + "properties": { + "affectedVnfs": { + "description": "Information about the VNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified VNFs.\nNOTE: At least one of the attributes \"changedVnfInfo\", \"changedExtConnectivity\" or \"modificationsTriggeredByVnfPkgChange\" or “changedCertificateInfo” shall be present. Not more than one of \"changedVnfInfo\" and \"modificationsTriggeredByVnfPkgChange\" shall be present.\n", + "type": "object", + "required": [ + "vnfInstanceId", + "vnfdId", + "vnfProfileId", + "vnfName", + "changeType", + "changeResult" + ], + "anyOf": [ + { + "required": [ + "changedExtConnectivity" + ] + }, + { + "oneOf": [ + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ] + } + ], + "properties": { + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProfileId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "vnfName": { + "description": "Name of the VNF Instance.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change Permitted values: - ADD - REMOVE - INSTANTIATE - TERMINATE - SCALE - CHANGE_FLAVOUR - HEAL - OPERATE - MODIFY_INFORMATION - CHANGE_EXTERNAL_VNF_CONNECTIVITY - CHANGE_VNFPKG\n", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "INSTANTIATE", + "TERMINATE", + "SCALE", + "CHANGE_FLAVOUR", + "HEAL", + "OPERATE", + "MODIFY_INFORMATION", + "CHANGE_EXTERNAL_VNF_CONNECTIVITY", + "CHANGE_VNFPKG" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + }, + "changedInfo": { + "description": "Information about the changed VNF instance information, including VNF configurable properties, and certificate content if applicable. When the \"changedInfo\" attribute is present, either the \"changedVnfInfo\" attribute or the \"changedExtConnectivity\" attribute or both shall be present.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ], + "oneOf": [ + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ], + "properties": { + "changedVnfInfo": { + "description": "This type represents the information that is requested to be modified for a VNF instance. The information to be modified shall comply with the associated NSD. EXAMPLE. The vnfPkgId attribute value for a particular VNF instance can only be updated with a value that matches the identifier value of a VNF package whose vnfdId is present in the associated profile of the NSD.\n", + "type": "object", + "required": [ + "vnfInstanceId" + ], + "properties": { + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "New value of the \"vnfInstanceName\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "New value of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "changedExtConnectivity": { + "description": "Information about changed external connectivity, if applicable. Only information about external VL instances that have been added or modified shall be provided. See note.\n", + "type": "array", + "items": { + "description": "This type represents information about an VNF external VL.", + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. 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.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "secondaryCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + }, + "extNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type represents the information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network\n", + "type": "object", + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], + "properties": { + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "netAttDefResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + }, + "associatedExtCpId": { + "description": "Identifier of the external CP of the VNF associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP of the VNF associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + }, + "currentVnfExtCpData": { + "description": "This type represents configuration information for external CPs created from a CPD.\nNOTE 1: In case this identifier refers to a CPD with trunking enabled, the external CP instances created from this CPD will represent ports in a trunk. NOTE 2: The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure. NOTE 3: Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the \"cpdId' attribute, there shall be one \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk, all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance different than the one that has used it before the operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396 [11]). See notes 2, 3 and 4.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of a VNF external connection point. In the case of VM-based deployment of the VNFC exposing the external CP: In case a link port is provided, the NFVO shall use that link port when connecting the VNF external CP to the external VL. • In case a link port is not provided, the NFVO or VNFM shall create a link port on the external VL, and use that link port to connect the VNF external CP to the external VL. In the case of container-based deployment of the VNFC exposing the external CP, the NFVO and VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\nNOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\"\n for an external CP instance connected or to be connected to a virtual network not\n categorized as secondary container cluster network:\n - At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for\n an external CP instance representing a subport that is to be created, or an external CP instance\n that is to be created by creating the corresponding VNFC or VNF instance during the current or\n a subsequent LCM operation, or for an existing external CP instance that is to be re-configured\n or added to a particular external virtual link.\n - If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided\n referencing a pre-created link port with pre-configured address information.\n - If both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that\n the cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\nNOTE 2: In case the NFVO manages its own identifier space, the NFVO may remap this identifier\n when communicating with the VNFM. If the NFVO knows that there can be an identifier collision\n when communicating with the VNFM by using the identifier from the OSS/BSS, the NFVO shall remap it.\nNOTE 3: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n − Void.\n − At least one of these attributes shall be present for a to-be-created external CP instance or an existing\n external CP instance.\nNOTE 4: Cardinality greater than 1 is only applicable for specific cases where more than one network\n attachment definition resource is needed to fulfil the connectivity requirements of the external CP,\n e.g. to build a link redundant mated pair in SR-IOV cases. When more than one \"netAttDefResourceId\"\n is indicated, all shall belong to the same namespace as defined by the corresponding \n \"containerNamespace\" attribute in the \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\nNOTE 5: Either \"linkPortId\" or \"netAttDefResourceId\" may be included, but not both.\n", + "type": "object", + "oneOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "createExtLinkPort": { + "description": "Indicates the need to create a dedicated link port for the external CP. If set to True, a link port is created. If set to False, no link port is created. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "type": "boolean" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 3.\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\nNOTE:\tThis 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.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values: - IP_OVER_ETHERNET - IP_FOR_VIRTUAL_CP See note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet. NOTE 1: 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.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "ipAddresses" + ] + }, + { + "required": [ + "macAddress" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationType": { + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values are: - VLAN: The subport uses VLAN as encapsulation type. - INHERIT: The subport gets its segmentation type from the network it is connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "type": "string", + "enum": [ + "VLAN", + "INHERIT" + ] + }, + "segmentationId": { + "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values:\n - IPV4\n - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents network address data for a virtual CP. It shall comply with the provisions defined in table 6.5.3.12a-1.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the\n container cluster will assign an IP address. \n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes® that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + } + } + } + } + } + }, + "netAttDefResourceId": { + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 3, 4 and 5.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "modificationsTriggeredByVnfPkgChange": { + "description": "This type represents attribute modifications that were performed by the VNFM on an \"Individual VNF instance\" resource when changing the current VNF package. The \"ModificationsTriggeredByVnfPkgChange\" data type shall comply with the provisions defined in table 6.5.3.79-1.\n", + "type": "object", + "properties": { + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". 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.\n", + "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 the related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + } + } + }, + "changedCertificateInfo": { + "description": "Information about changed certificate, if applicable. See note\n", + "type": "array", + "items": { + "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": "Information for certificate profile.", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "securityPolicy": { + "description": "Information for security policy to be satisfied for certificate.", + "type": "array", + "items": { + "type": "object", + "description": "This type represents the input information related to certificate management.\n", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "maxValidityPeriod": { + "description": "A number as defined in IETF RFC 8259.\n", + "type": "number" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.\n", + "type": "string" + }, + "minimumKeyLength": { + "description": "A number as defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "cmfInfo": { + "type": "object", + "description": "This type provides input information related to CMF for certificate management\n", + "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.\n", + "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.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } + }, + "supportedProtocol": { + "type": "array", + "description": "Supported protocol by CMF instance. Permitted values:\n CMP\n CMPv2\n EST\n SCEP\n", + "minItems": 1, + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\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. \nNOTE : The CertificateDesc data type is defined in clause 7.1.19.2 of ETSI GS NFV IFA 011\n", + "type": "object", + "required": [ + "id", + "certficateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certficateDescId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "certificateType": { + "description": "Type of this certificate. Values: * VNFCI_CERT * VNFOAM_CERT\n", + "type": "string", + "enum": [ + "VNFCI_CERT", + "NFOAM_CERT" + ] + }, + "supportedCertificateManagement": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "version": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + }, + "serialNumber": { + "description": "Serial number of this certificate\n", + "type": "integer" + }, + "signatureAlgorithm": { + "description": "Algorithm of this certificate’s signature.\n", + "type": "string" + }, + "issuer": { + "description": "Issuer of this certificate.\n", + "type": "string" + }, + "notBefore": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notAfter": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "subject": { + "description": "Subject of this certificate.\n", + "type": "string" + }, + "publicKeyAlgorithm": { + "description": "Algorithm of this certificate’s public key\n", + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + } + } + } + } + } + } + } + }, + "affectedPnfs": { + "description": "Information about the PNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified PNFs. It shall comply with the provisions in Table 6.5.3.3-1.\n", + "type": "object", + "required": [ + "pnfId", + "pnfdId", + "pnfProfileId", + "cpInstanceId" + ], + "properties": { + "pnfId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "pnfdId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "pnfProfileId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "pnfName": { + "description": "Name of the PNF.\n", + "type": "string" + }, + "cpInstanceId": { + "description": "Identifier of the CP in the scope of the PNF.\n", + "type": "array", + "items": { + "description": "An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n", + "type": "string" + } + }, + "changeType": { + "description": "Signals the type of change. Permitted values: - ADD - REMOVE - MODIFY\n", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "MODIFY" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + } + } + } + }, + "affectedVls": { + "description": "Information about the VL instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VLs. NOTE: The resource handles of the affected NS link ports can be found by dereferencing the identifiers in the \"linkPortIds\" attribute.\n", + "type": "object", + "required": [ + "nsVirtualLinkInstanceId", + "nsVirtualLinkDescId", + "vlProfileId", + "changeType", + "changeResult" + ], + "properties": { + "nsVirtualLinkInstanceId": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + }, + "nsVirtualLinkDescId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "vlProfileId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADD * DELETE * MODIFY * ADD_LINK_PORT * REMOVE_LINK_PORT\n", + "type": "string", + "enum": [ + "ADD", + "DELETE", + "MODIFY", + "ADD_LINK_PORT", + "REMOVE_LINK_PORT" + ] + }, + "linkPortIds": { + "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references an \"NsLinkPortInfo\" structure.\nShall be set when changeType is equal to \"ADD_LINK_PORT\" or \"REMOVE_LINK_PORT\", and the related \"NsLinkPortInfo\" structures are present (case \"add\") or have been present (case \"remove\") in the \"NsVirtualLinkInfo\" structure that is represented by the \"virtualLink¬Info\" attribute in the \"NsInstance\" structure. See note.\n", + "type": "array", + "items": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + } + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: * COMPLETED * ROLLED_BACK * FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + } + } + } + }, + "affectedVnffgs": { + "description": "Information about the VNFFG instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified VNFFG instances. It shall comply with the provisions in Table 6.5.3.5-1.\n", + "type": "object", + "required": [ + "vnffgInstanceId", + "vnffgdId" + ], + "properties": { + "vnffgInstanceId": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + }, + "vnffgdId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: - ADD - DELETE - MODIFY\n", + "type": "string", + "enum": [ + "ADD", + "DELETE", + "MODIFY" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + } + } + } + }, + "affectedNss": { + "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified nested NSs. It shall comply with the provisions in Table 6.5.3.6-1.\n", + "type": "object", + "required": [ + "nsInstanceId", + "nsdId", + "changeType", + "changeResult" + ], + "properties": { + "nsInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "nsdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - INSTANTIATE - SCALE - UPDATE - HEAL - TERMINATE\n", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "INSTANTIATE", + "SCALE", + "UPDATE", + "HEAL", + "TERMINATE" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED - PARTIALLY_COMPLETED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED", + "PARTIALLY_COMPLETED" + ] + }, + "changedInfo": { + "description": "Information about the changed NS instance information, if applicable.\n", + "type": "object", + "properties": { + "wanConnectionInfoModifications": { + "description": "Information about the modified WAN related connectivity information, if applicable.\n", + "type": "array", + "items": { + "description": "This type represents attribute modifications that were performed on WAN connection information. The attributes that can be included consist of those requested to be modified explicitly with the \"UpdateNsRequest\" data structure. It shall comply with the provisions defined in table 6.5.3.93-1.\n", + "type": "object", + "required": [ + "wanConnectionInfoId" + ], + "properties": { + "wanConnectionInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "mscsName": { + "description": "If present, this attribute signals modifications of the \"mscsName\" attribute in \"MscsInfo\" as defined in clause 6.5.3.82.\n", + "type": "string" + }, + "mscsDescription": { + "description": "If present, this attribute signals modifications of the \"mscsDescription\" attribute in \"MscsInfo\" as defined in clause 6.5.3.82.\n", + "type": "string" + }, + "mscsEndpoints": { + "description": "If present, this attribute signals modifications of certain entries in the \"mscsEndpoints\" attribute array in \"MscsInfo\", as defined in clause 6.5.3.82.\n", + "type": "array", + "items": { + "description": "This type provides encapsulates information about an MSCS endpoint of the MSCS. It shall comply with the provisions defined in table 6.5.3.83-1.\n", + "type": "object", + "required": [ + "mscsEndpointId", + "directionality", + "connectivityServiceEndpoinId" + ], + "properties": { + "mscsEndpointId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "directionality": { + "description": "Directionality of the data traffic in the context of the terminating MSCS endpoint from WAN’s perspective. Permitted values: - INBOUND: to indicate into the WAN. - OUTBOUND: to indicate from the WAN. - BOTH: to indicate bidirectional data traffic to/from the WAN.\n", + "type": "string", + "enum": [ + "INBOUND", + "OUTBOUND", + "BOTH" + ] + }, + "connectivityServiceEndpoinId": { + "description": "References the connectivity service endpoint configuration information applicable to support the MSCS endpoint. More than one connectivity service endpoint can be referred when endpoints are in LAG mode.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + } + }, + "removeMscsEndpointIds": { + "description": "If present, this attribute signals the deletion of certain entries in the \"mscsEndpoints\" attribute array in \"MscsInfo\", as defined in clause 6.5.3.82.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "connectivityServiceEndpoints": { + "description": "If present, this attribute signals modifications of certain entries in the \"connectivityServiceEndpoints\" attribute array in \"WanConnectionProtocolInfo\", as defined in clause 6.5.3.91.\n", + "type": "array", + "items": { + "description": "This type provides configuration data for the NFVI-PoP network gateway providing connectivity service endpoints. The connectivity service endpoints are used as endpoints by an MSCS. It shall comply with the provisions defined in Table 6.5.3.84-1.\n", + "type": "object", + "required": [ + "connectivityServiceEndpointId", + "vimId" + ], + "properties": { + "connectivityServiceEndpointId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "siteToWanLayer2ProtocolData": { + "description": "This type provides information about Layer 2 protocol specific information for the configuration of the NFVI-PoP network gateway to enable the stitching of the intra-site VN to the MSCS over the WAN. It shall comply with the provisions defined in Table 6.5.3.85-1. NOTE: Either \"networkResources\" or \"vnSegmentsIds\" shall be provided, but not both.\n", + "type": "object", + "required": [ + "layer2ConnectionInfo" + ], + "properties": { + "layer2ConnectionInfo": { + "description": "Layer 2 protocol parameters of the connectivity service endpoint (CSE).\n", + "type": "object", + "required": [ + "connectionType", + "interfaceType", + "interfaceTagging", + "encapsulationType" + ], + "properties": { + "connectionType": { + "description": "The type of connection to be established on the connectivity service point. Permitted values: - CSE: defined by the characteristics of the existing referred connectivity service point. - AGGREGATE_CSE: create an aggregation of the connectivity service endpoints.\n", + "type": "string", + "enum": [ + "CSE", + "AGGREGATE_CSE" + ] + }, + "interfaceType": { + "description": "To indicate whether to create logical interfaces on the referred connectivity service endpoint or new aggregated connectivity service endpoint. Permitted values: - PARENT: use the mapped interface to the connectivity service endpoint as is, i.e., do not create logical interfaces. - LOGICAL: create logical interfaces.\n", + "type": "string", + "enum": [ + "PARENT", + "LOGICAL" + ] + }, + "interfaceTagging": { + "description": "The type of frames to forward on the connectivity service point. Permitted values: - UNTAGGED: an interface where frames are not tagged. - TAGGED: an interface configured to forward tagged frames (i.e., enabled for VLAN tagging).\n", + "type": "string", + "enum": [ + "UNTAGGED", + "TAGGED" + ] + }, + "encapsulationType": { + "description": "The type of encapsulation. If the interfaceTagging=\"TAGGED\", either \"VLAN\" or \"VXLAN\" shall be set. Permitted values: - ETH: generic Ethernet encapsulation. - VLAN: encapsulation based on VLAN. - VXLAN: encapsulation based on VXLAN.\n", + "type": "string", + "enum": [ + "ETH", + "VLAN", + "VXLAN" + ] + }, + "vlanTaggingType": { + "description": "Type of encapsulation method for VLAN tagging. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VLAN\". Permitted values: - DOT1Q: used when packets on the CSE are encapsulated with one or a set of customer VLAN identifiers. - QINQ: used when packets on the CSE are encapsulated with multiple customer VLAN identifiers and a single\n service VLAN identifier.\n- QINANY: used when packets on the CSE have no specific customer VLAN and a service VLAN identifier is used.\n", + "type": "string", + "enum": [ + "DOT1Q", + "QINQ", + "QINANY" + ] + }, + "wanSegmentIds": { + "description": "Segment identifiers to pass on the tagged interface. Shall be present if encapsulationType=\"VLAN\" or “VXLAN\".\n", + "type": "object", + "required": [ + "wanSegmentIdValue" + ], + "properties": { + "wanSegmentIdValue": { + "description": "Identifier of the network segment (e.g., VLAN id or VNI).\n", + "type": "string" + }, + "wanSegmentIdUpperRange": { + "description": "Identifier of the upper range network segment, in case the \"wanSegmentIds\" is used to define a range.\n", + "type": "string" + } + } + }, + "vxlanConfig": { + "description": "Additional configuration needed when using VXLAN encapsulation. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VXLAN\".\n", + "type": "object", + "required": [ + "peerMode" + ], + "properties": { + "peerMode": { + "description": "Type of VXLAN access mode. Default value is \"STATIC\".\nPermitted values: - STATIC - BGP_EVPN\n", + "type": "string", + "enum": [ + "STATIC", + "BGP_EVPN" + ] + }, + "peers": { + "description": "List of IP addresses of VTEP peers when using static mode.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + }, + "lagInterfaceData": { + "description": "Information for setting up a LAG interface aggregating multiple connectivity service endpoints.\n", + "type": "object", + "required": [ + "aggregatedEndpoints", + "lacpActivation", + "lacpConfig" + ], + "properties": { + "aggregatedEndpoints": { + "description": "List of the connectivity service endpoints that are to be aggregated. Shall be present if connectionType=\"AGGREGATE_CSE\". In case of aggregating connectivity service endpoints, only one SiteToWanLayer2ProtocolData shall be provided for the whole set of aggregated endpoints.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "lacpActivation": { + "description": "Indicates whether to activate LACP on the interface. If \"TRUE\", the LACP is to be activated, or \"FALSE\" otherwise. Default value is \"FALSE\".\n", + "type": "boolean" + }, + "lacpConfig": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "layer2ControlProtocol": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "mtuL2": { + "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 2 (in bytes). Default value is \"1500\" (bytes).\n", + "type": "number" + }, + "virtualRoutingAndForwarding": { + "description": "Configuration related to the L2 virtual routing and forwarding (MAC-VRF).\n", + "type": "object", + "required": [ + "macVrfName" + ], + "properties": { + "macVrfName": { + "description": "Name (or identifier) of the MAC-VRF instance.\n", + "type": "string" + } + } + }, + "forwardingConfig": { + "description": "Information related to the forwarding of the VN in the NFVI-PoP to the connectivity service endpoint, if information about the VN to \"stitch\" is already known. . by the OSS/BSS. Shall not be provided otherwise, in which case the NFVO will infer the forwarding configuration based on the NS VL, or external VL, or externally-managed VL provisioning.\n", + "type": "object", + "oneOf": [ + { + "required": [ + "networkResources" + ] + }, + { + "required": [ + "vnSegmentIds" + ] + } + ], + "properties": { + "networkResources": { + "description": "Reference to the VN resource to be forwarded into/from the MSCS. See note.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + } + }, + "vnSegmentIds": { + "description": "Identifiers of the network segments of the VN resources to be forwarded into/from the MSCS.\n", + "type": "object", + "required": [ + "vnSegmentIdValue" + ], + "properties": { + "vnSegmentIdValue": { + "description": "Identifier of the network segment.\n", + "type": "string" + }, + "vnSegmentIdUpperRange": { + "description": "Identifier of the upper range network segment, in case the \"vnSegmentIds\" is used to define a range.\n", + "type": "string" + } + } + } + } + } + } + }, + "siteToWanLayer3ProtocolData": { + "description": "This type provides information about Layer 3 protocol specific information for the stitching of the intra-site VN to the multi-site connectivity service over the WAN. It shall comply with the provisions defined in Table 6.5.3.86-1.\n", + "type": "object", + "required": [ + "routingInfo" + ], + "properties": { + "logicalInterfaceIpAddress": { + "description": "IP addressing information associated to a logical interface. Shall be present if the \"interfaceType\" of the SiteToWanLayer2ProtocolData is equal to \"LOGICAL\".\n", + "type": "object", + "required": [ + "ipAddress", + "associatedSegmentId" + ], + "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" + }, + "associatedSegmentId": { + "description": "The associated segment identifier that has triggered the creation of the logical interface. The value shall be one of the values listed in the \"wanSegmentIds\" of the \"siteToWanLayer2ProtocolData\".\n", + "type": "string" + } + } + }, + "routingInfo": { + "description": "The routing information that is activated on the connectivity service endpoint. More than one \"routingInfo\" is allowed to enable stacking different routing protocols (e.g., one routing protocol for IPv4 and another one for IPv6).\n", + "type": "object", + "required": [ + "routingProtocol", + "routingAddressFamily" + ], + "properties": { + "routingProtocol": { + "description": "The routing protocol that is activated on the connectivity service endpoint. Permitted values: - BGP: used for dynamic routing BGPv4. - RIP: used for dynamic routing RIPv2. - OSPF: used for dynamic routing (OSPF version 2 for IPv4; and OSPF version 3 for IPv6). - STATIC: used for static routing. - DIRECT: used when the NFVI-PoP network is directly connected to the WAN provider network. - VRRP: used when the NFVI-PoP network is directly connected to the WAN provider network with virtual\n router redundancy protocol support (VRRP).\n", + "type": "string", + "enum": [ + "BGP", + "RIP", + "OSPF", + "STATIC", + "DIRECT", + "VRRP" + ] + }, + "staticRouting": { + "description": "Defines a static route. It shall only be present if the routingProtocol=\"STATIC\".\n", + "type": "object", + "required": [ + "ipVersion", + "ipPrefix", + "prefixSize", + "nextHop" + ], + "properties": { + "ipVersion": { + "description": "The IP version applicable to the routing entry. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "ipPrefix": { + "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" + }, + "prefixSize": { + "description": "The IP prefix size.\n", + "type": "number" + }, + "nextHop": { + "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" + } + } + }, + "routingAddressFamily": { + "description": "The IP version applicable to the dynamic routing protocol. Shall be present for dynamic routing protocols. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPv6" + ] + }, + "ospfRouting": { + "description": "Defines parameters for OSPF routing. It shall only be present if the routingProtocol=\"OSPF\".\n", + "type": "object", + "required": [ + "areaId" + ], + "properties": { + "areaId": { + "description": "The routing area identifier, e.g., a number or an IP address.\n", + "type": "string" + } + } + }, + "bgpRouting": { + "description": "Defines parameters for BGP routing. It shall only be present if the routingProtocol=\"BGP\".\n", + "type": "object", + "required": [ + "bgpAs" + ], + "properties": { + "bgpAs": { + "description": "The Autonomous System (AS) identification applicable to the BGP routing info entry.\n", + "type": "object" + }, + "bgpNeighbour": { + "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" + }, + "bgpAdditionalParam": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "routeMapsDistribution": { + "description": "Maps of routes that are permitted or denied for redistribution.\n", + "type": "object", + "required": [ + "policy", + "sequence", + "matchAndSetRule" + ], + "properties": { + "policy": { + "description": "The policy to apply to the route distribution.\nPermitted values: - PERMIT - DENY\n", + "type": "string", + "enum": [ + "PERMIT", + "DENY" + ] + }, + "sequence": { + "description": "Sequence or index number assigned to the route-map.\n", + "type": "number" + }, + "matchAndSetRule": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + }, + "mtuL3": { + "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 3 (in bytes). Default value is \"1500\" (bytes).\n", + "type": "number" + }, + "virtualRoutingAndForwarding": { + "description": "Configuration related to the virtual routing and forwarding (VRF).\n", + "type": "object", + "required": [ + "vrfName" + ], + "properties": { + "vrfName": { + "description": "Name (or identifier) of the VRF instance.\n", + "type": "string" + } + } + }, + "bfdConfig": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + } + }, + "removeConnectivityServiceEndpoints": { + "description": "If present, this attribute signals the deletion of certain entries in the \"connectivityServiceEndpoints\" attribute array in \"WanConnectionProtocolInfo\", as defined in clause 6.5.3.91.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "affectedSaps": { + "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified SAP of a NS. It shall comply with the provisions in Table 6.5.3.7-1.\n", + "type": "object", + "required": [ + "sapInstanceId", + "sapdId" + ], + "properties": { + "sapInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "sapdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "sapName": { + "description": "Human readable name for the SAP.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - MODIFY\n", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "MODIFY" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + } + } + } + } + } + }, + "lcmCoordinations": { + "description": "Information about LCM coordination actions (see clause 12) related to this LCM operation occurrence.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "coordinationActionName", + "startTime", + "endpointType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "coordinationActionName": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "coordinationResult": { + "description": "The enumeration LcmCoordResultType defines the permitted values to represent the result \nof executing an LCM coordination action. The coordination result also implies the action \nto be performed by the NFVO as the follow-up to this coordination. The LcmCoordResultType \nshall comply with the provisions defined in table 12.5.4.3.-1.\n\n- CONTINUE: The related LCM operation shall be continued, staying in the state \"PROCESSING\".\n- ABORT: The related LCM operation shall be aborted by transitioning into the state \"FAILED_TEMP\".\n- CANCELLED: The coordination action has been cancelled upon request of the API consumer, \n i.e. the NFVO. The related LCM operation shall be aborted by transitioning into \n the state \"FAILED_TEMP\".\n", + "type": "string", + "enum": [ + "CONTINUE", + "ABORT", + "CACELLED" + ] + }, + "startTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endpointType": { + "description": "The endpoint type used by this coordination action. Valid values: - MGMT: coordination with other operation supporting management systems (e.g. OSS/BSS)\n", + "type": "string", + "enum": [ + "MGMT" + ] + }, + "delay": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + } + } + } + }, + "rejectedLcmCoordinations": { + "description": "Information about LCM coordination actions (see clause 12) that were rejected by 503 error which means they can be tried again after a delay. See note 3.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "coordinationActionName", + "rejectionTime", + "endpointType", + "delay" + ], + "properties": { + "coordinationActionName": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "rejectionTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endpointType": { + "description": "The endpoint type used by this coordination action. Valid values: - MGMT: coordination with other operation supporting management systems (e.g. OSS/BSS)\n", + "type": "string", + "enum": [ + "MGMT" + ] + }, + "delay": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + } + } + } + }, + "warnings": { + "description": "Warning messages that were generated while the operation was executing.\nIf the operation has included VNF LCM operations or NS LCM coordination actions and these have resulted in warnings, such warnings should be added to this attribute.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "nsInstance" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "nsInstance": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "cancel": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "retry": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "rollback": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "continue": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "fail": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } + } + } + } } \ No newline at end of file -- GitLab From 0cdd8a098b38e1a3aea14ee4a40b7df2237c8b09 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Mon, 6 Jan 2025 12:09:19 +0100 Subject: [PATCH 122/141] updated NSLcmOpOccNotif schema as per NFVSOL(23)00387 --- ...perationOccurrenceNotification.schema.json | 3378 +++++++++-------- 1 file changed, 1806 insertions(+), 1572 deletions(-) diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOperationOccurrenceNotification.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOperationOccurrenceNotification.schema.json index 5fbda439..c22a254d 100644 --- a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOperationOccurrenceNotification.schema.json +++ b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOperationOccurrenceNotification.schema.json @@ -1,1573 +1,1807 @@ { - "type": "object", - "description": "This type represents an NS lifecycle management operation occurrence notification, which informs the receiver of changes in the NS lifecycle caused by an NS LCM operation occurrence. The NS LCM operation occurrence may be triggered by the OSS/BSS or automatically triggered by the NFVO.", - "required": [ - "id", - "nsInstanceId", - "nsLcmOpOccId", - "operation", - "notificationType", - "subscriptionId", - "timestamp", - "notificationStatus", - "operationState", - "isAutomaticInvocation", - "_links" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "nsInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "nsLcmOpOccId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "operation": { - "description": "The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n", - "type": "string", - "enum": [ - "INSTANTIATE", - "SCALE", - "UPDATE", - "TERMINATE", - "HEAL" - ] - }, - "notificationType": { - "description": "Discriminator for the different notification types. Shall be set to \"NsLcmOperationOccurrenceNotification\" for this notification type.\n", - "type": "string" - }, - "subscriptionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "timestamp": { - "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "notificationStatus": { - "description": "Indicates whether this notification reports about the start of a NS lifecycle operation or the result of a NS lifecycle operation. Permitted values: - START: Informs about the start of the NS LCM operation occurrence. - RESULT: Informs about the final or intermediate result of the NS LCM operation occurrence.\n", - "type": "string", - "enum": [ - "START", - "RESULT" - ] - }, - "operationState": { - "description": "Value | Description ------|------------ PROCESSING | The NS LCM operation is currently in execution. COMPLETED | The NS LCM operation has been completed successfully. PARTIALLY_COMPLETED | The NS LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The NS LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The NS LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action will not succeed. OLLING_BACK | The NS LCM operation is currently being rolled back. ROLLED_BACK | The NS LCM operation has been successfully rolled back, i.e. The state of the NS prior to the original operation invocation has been restored as closely as possible.\n", - "type": "string", - "enum": [ - "PROCESSING", - "COMPLETED", - "PARTIALLY_COMPLETED", - "FAILED_TEMP", - "FAILED", - "ROLLING_BACK", - "ROLLED_BACK" - ] - }, - "isAutomaticInvocation": { - "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", - "type": "boolean" - }, - "verbosity": { - "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. It shall comply with the provisions defined in table 6.5.4.11-1. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", - "type": "string", - "enum": [ - "FULL", - "SHORT" - ] - }, - "affectedVnf": { - "description": "Information about the VNF instances that were affected during the lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified VNFs.\nNOTE: At least one of the attributes \"changedVnfInfo\", \"changedExtConnectivity\" or \"modificationsTriggeredByVnfPkgChange\" shall be present. Not more than one of \"changedVnfInfo\" and \"modificationsTriggeredByVnfPkgChange\" shall be present.\n", - "type": "object", - "required": [ - "vnfInstanceId", - "vnfdId", - "vnfProfileId", - "vnfName", - "changeType", - "changeResult" - ], - "anyOf": [ - { - "required": [ - "changedExtConnectivity" - ] - }, - { - "oneOf": [ - { - "required": [ - "changedVnfInfo" - ] - }, - { - "required": [ - "modificationsTriggeredByVnfPkgChange" - ] - } - ] - } - ], - "properties": { - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProfileId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "vnfName": { - "description": "Name of the VNF Instance.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change Permitted values: - ADD - REMOVE - INSTANTIATE - TERMINATE - SCALE - CHANGE_FLAVOUR - HEAL - OPERATE - MODIFY_INFORMATION - CHANGE_EXTERNAL_VNF_CONNECTIVITY - CHANGE_VNFPKG\n", - "type": "string", - "enum": [ - "ADD", - "REMOVE", - "INSTANTIATE", - "TERMINATE", - "SCALE", - "CHANGE_FLAVOUR", - "HEAL", - "OPERATE", - "MODIFY_INFORMATION", - "CHANGE_EXTERNAL_VNF_CONNECTIVITY", - "CHANGE_VNFPKG" - ] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", - "type": "string", - "enum": [ - "COMPLETED", - "ROLLED_BACK", - "FAILED" - ] - }, - "changedInfo": { - "description": "Information about the changed VNF instance information, including VNF configurable properties,if applicable. When the \"changedInfo\" attribute is present, either the \"changedVnfInfo\" attribute or the \"changedExtConnectivity\" attribute or both shall be present.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "changedVnfInfo" - ] - }, - { - "required": [ - "changedVnfInfo" - ] - }, - { - "required": [ - "modificationsTriggeredByVnfPkgChange" - ] - } - ], - "oneOf": [ - { - "required": [ - "changedVnfInfo" - ] - }, - { - "required": [ - "modificationsTriggeredByVnfPkgChange" - ] - } - ], - "properties": { - "changedVnfInfo": { - "description": "This type represents the information that is requested to be modified for a VNF instance. The information to be modified shall comply with the associated NSD. EXAMPLE. The vnfPkgId attribute value for a particular VNF instance can only be updated with a value that matches the identifier value of a VNF package whose vnfdId is present in the associated profile of the NSD.\n", - "type": "object", - "required": [ - "vnfInstanceId" - ], - "properties": { - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstanceName": { - "description": "New value of the \"vnfInstanceName\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "New value of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "changedExtConnectivity": { - "description": "Information about changed external connectivity, if applicable. Only information about external VL instances that have been added or modified shall be provided. See note.\n", - "type": "array", - "items": { - "description": "This type represents information about an VNF external VL.", - "type": "object", - "required": [ - "id", - "resourceHandle", - "currentVnfExtCpData" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", - "type": "object", - "required": [ - "resourceId" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", - "type": "string" - } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. 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.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", - "type": "object", - "required": [ - "resourceId" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "secondaryCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - } - } - } - }, - "extNetAttDefResource": { - "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", - "type": "array", - "items": { - "description": "This type represents the information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network\n", - "type": "object", - "required": [ - "netAttDefResourceInfoId", - "netAttDefResource" - ], - "properties": { - "netAttDefResourceInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "netAttDefResource": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", - "type": "object", - "required": [ - "resourceId" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", - "type": "string" - } - } - }, - "associatedExtCpId": { - "description": "Identifier of the external CP of the VNF associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "associatedVnfcCpId": { - "description": "Identifier of the VNFC CP of the VNF associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - } - } - } - }, - "currentVnfExtCpData": { - "description": "This type represents configuration information for external CPs created from a CPD.\nNOTE 1: In case this identifier refers to a CPD with trunking enabled, the external CP instances created from this CPD will represent ports in a trunk. NOTE 2: The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure. NOTE 3: Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the \"cpdId' attribute, there shall be one \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk, all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance different than the one that has used it before the operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", - "type": "object", - "required": [ - "cpdId" - ], - "properties": { - "cpdId": { - "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", - "type": "string" - }, - "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396 [11]). See notes 2, 3 and 4.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of a VNF external connection point. In the case of VM-based deployment of the VNFC exposing the external CP: In case a link port is provided, the NFVO shall use that link port when connecting the VNF external CP to the external VL. • In case a link port is not provided, the NFVO or VNFM shall create a link port on the external VL, and use that link port to connect the VNF external CP to the external VL. In the case of container-based deployment of the VNFC exposing the external CP, the NFVO and VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\nNOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\"\n for an external CP instance connected or to be connected to a virtual network not\n categorized as secondary container cluster network:\n - At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for\n an external CP instance representing a subport that is to be created, or an external CP instance\n that is to be created by creating the corresponding VNFC or VNF instance during the current or\n a subsequent LCM operation, or for an existing external CP instance that is to be re-configured\n or added to a particular external virtual link.\n - If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided\n referencing a pre-created link port with pre-configured address information.\n - If both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that\n the cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\nNOTE 2: In case the NFVO manages its own identifier space, the NFVO may remap this identifier\n when communicating with the VNFM. If the NFVO knows that there can be an identifier collision\n when communicating with the VNFM by using the identifier from the OSS/BSS, the NFVO shall remap it.\nNOTE 3: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n − Void.\n − At least one of these attributes shall be present for a to-be-created external CP instance or an existing\n external CP instance.\nNOTE 4: Cardinality greater than 1 is only applicable for specific cases where more than one network\n attachment definition resource is needed to fulfil the connectivity requirements of the external CP,\n e.g. to build a link redundant mated pair in SR-IOV cases. When more than one \"netAttDefResourceId\"\n is indicated, all shall belong to the same namespace as defined by the corresponding \n \"containerNamespace\" attribute in the \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\nNOTE 5: Either \"linkPortId\" or \"netAttDefResourceId\" may be included, but not both.\n", - "type": "object", - "oneOf": [ - { - "required": [ - "linkPortId" - ] - }, - { - "required": [ - "cpProtocolData" - ] - } - ], - "properties": { - "parentCpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "linkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "createExtLinkPort": { - "description": "Indicates the need to create a dedicated link port for the external CP. If set to True, a link port is created. If set to False, no link port is created. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", - "type": "boolean" - }, - "cpProtocolData": { - "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 3.\n", - "type": "array", - "items": { - "description": "This type represents network protocol data.\nNOTE:\tThis 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.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "Identifier of layer(s) and protocol(s). Permitted values: - IP_OVER_ETHERNET - IP_FOR_VIRTUAL_CP See note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. NOTE 1: 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.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "ipAddresses" - ] - }, - { - "required": [ - "macAddress" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values are: - VLAN: The subport uses VLAN as encapsulation type. - INHERIT: The subport gets its segmentation type from the network it is connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", - "type": "string", - "enum": [ - "VLAN", - "INHERIT" - ] - }, - "segmentationId": { - "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values:\n - IPV4\n - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "fixedAddresses": { - "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "numDynamicAddresses": { - "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "integer" - }, - "addressRange": { - "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - } - } - } - } - } - }, - "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP. It shall comply with the provisions defined in table 6.5.3.12a-1.\nNOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be\n used, otherwise it will be ignored by the CISM.\nNOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the\n container cluster will assign an IP address.\nNOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes® that supports configuration of address pools for load balancer services.\nNOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which the container cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - }, - "netAttDefResourceId": { - "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 3, 4 and 5.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "modificationsTriggeredByVnfPkgChange": { - "description": "This type represents attribute modifications that were performed by the VNFM on an \"Individual VNF instance\" resource when changing the current VNF package. The \"ModificationsTriggeredByVnfPkgChange\" data type shall comply with the provisions defined in table 6.5.3.79-1.\n", - "type": "object", - "properties": { - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". 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.\n", - "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 the related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A Version. Representation: string of variable length.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A Version. Representation: string of variable length.\n", - "type": "string" - } - } - } - } - } - } - } - }, - "affectedPnf": { - "description": "Information about the PNF instances that were affected during the lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified PNFs. It shall comply with the provisions in Table 6.5.3.3-1.\n", - "type": "object", - "required": [ - "pnfId", - "pnfdId", - "pnfProfileId", - "cpInstanceId" - ], - "properties": { - "pnfId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "pnfdId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "pnfProfileId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "pnfName": { - "description": "Name of the PNF.\n", - "type": "string" - }, - "cpInstanceId": { - "description": "Identifier of the CP in the scope of the PNF.\n", - "type": "array", - "items": { - "description": "An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n", - "type": "string" - } - }, - "changeType": { - "description": "Signals the type of change. Permitted values: - ADD - REMOVE - MODIFY\n", - "type": "string", - "enum": [ - "ADD", - "REMOVE", - "MODIFY" - ] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", - "type": "string", - "enum": [ - "COMPLETED", - "ROLLED_BACK", - "FAILED" - ] - } - } - } - }, - "affectedVl": { - "description": "Information about the VL instances that were affected during the lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary VLs. NOTE: The resource handles of the affected NS link ports can be found by dereferencing the identifiers in the \"linkPortIds\" attribute.\n", - "type": "object", - "required": [ - "nsVirtualLinkInstanceId", - "nsVirtualLinkDescId", - "vlProfileId", - "changeType", - "changeResult" - ], - "properties": { - "nsVirtualLinkInstanceId": { - "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", - "type": "string" - }, - "nsVirtualLinkDescId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "vlProfileId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADD * DELETE * MODIFY * ADD_LINK_PORT * REMOVE_LINK_PORT\n", - "type": "string", - "enum": [ - "ADD", - "DELETE", - "MODIFY", - "ADD_LINK_PORT", - "REMOVE_LINK_PORT" - ] - }, - "linkPortIds": { - "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references an \"NsLinkPortInfo\" structure.\nShall be set when changeType is equal to \"ADD_LINK_PORT\" or \"REMOVE_LINK_PORT\", and the related \"NsLinkPortInfo\" structures are present (case \"add\") or have been present (case \"remove\") in the \"NsVirtualLinkInfo\" structure that is represented by the \"virtualLink¬Info\" attribute in the \"NsInstance\" structure. See note.\n", - "type": "array", - "items": { - "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", - "type": "string" - } - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: * COMPLETED * ROLLED_BACK * FAILED\n", - "type": "string", - "enum": [ - "COMPLETED", - "ROLLED_BACK", - "FAILED" - ] - } - } - } - }, - "affectedVnffg": { - "description": "Information about the VNFFG instances that were affected during the lifecycle operation. See note 1. \n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified VNFFG instances. It shall comply with the provisions in Table 6.5.3.5-1.\n", - "type": "object", - "required": [ - "vnffgInstanceId", - "vnffgdId" - ], - "properties": { - "vnffgInstanceId": { - "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", - "type": "string" - }, - "vnffgdId": { - "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: - ADD - DELETE - MODIFY\n", - "type": "string", - "enum": [ - "ADD", - "DELETE", - "MODIFY" - ] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", - "type": "string", - "enum": [ - "COMPLETED", - "ROLLED_BACK", - "FAILED" - ] - } - } - } - }, - "affectedNs": { - "description": "Information about the SAP instances that were affected during the lifecycle operation.See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified nested NSs. It shall comply with the provisions in Table 6.5.3.6-1.\n", - "type": "object", - "required": [ - "nsInstanceId", - "nsdId", - "changeType", - "changeResult" - ], - "properties": { - "nsInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "nsdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - INSTANTIATE - SCALE - UPDATE - HEAL - TERMINATE\n", - "type": "string", - "enum": [ - "ADD", - "REMOVE", - "INSTANTIATE", - "SCALE", - "UPDATE", - "HEAL", - "TERMINATE" - ] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED - PARTIALLY_COMPLETED\n", - "type": "string", - "enum": [ - "COMPLETED", - "ROLLED_BACK", - "FAILED", - "PARTIALLY_COMPLETED" - ] - }, - "changedInfo": { - "description": "Information about the changed NS instance information, if applicable.\n", - "type": "object", - "properties": { - "wanConnectionInfoModifications": { - "description": "Information about the modified WAN related connectivity information, if applicable.\n", - "type": "array", - "items": { - "description": "This type represents attribute modifications that were performed on WAN connection information. The attributes that can be included consist of those requested to be modified explicitly with the \"UpdateNsRequest\" data structure. It shall comply with the provisions defined in table 6.5.3.93-1.\n", - "type": "object", - "required": [ - "wanConnectionInfoId" - ], - "properties": { - "wanConnectionInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "mscsName": { - "description": "If present, this attribute signals modifications of the \"mscsName\" attribute in \"MscsInfo\" as defined in clause 6.5.3.82.\n", - "type": "string" - }, - "mscsDescription": { - "description": "If present, this attribute signals modifications of the \"mscsDescription\" attribute in \"MscsInfo\" as defined in clause 6.5.3.82.\n", - "type": "string" - }, - "mscsEndpoints": { - "description": "If present, this attribute signals modifications of certain entries in the \"mscsEndpoints\" attribute array in \"MscsInfo\", as defined in clause 6.5.3.82.\n", - "type": "array", - "items": { - "description": "This type provides encapsulates information about an MSCS endpoint of the MSCS. It shall comply with the provisions defined in table 6.5.3.83-1.\n", - "type": "object", - "required": [ - "mscsEndpointId", - "directionality", - "connectivityServiceEndpoinId" - ], - "properties": { - "mscsEndpointId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "directionality": { - "description": "Directionality of the data traffic in the context of the terminating MSCS endpoint from WAN’s perspective. Permitted values: - INBOUND: to indicate into the WAN. - OUTBOUND: to indicate from the WAN. - BOTH: to indicate bidirectional data traffic to/from the WAN.\n", - "type": "string", - "enum": [ - "INBOUND", - "OUTBOUND", - "BOTH" - ] - }, - "connectivityServiceEndpoinId": { - "description": "References the connectivity service endpoint configuration information applicable to support the MSCS endpoint. More than one connectivity service endpoint can be referred when endpoints are in LAG mode.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - } - }, - "removeMscsEndpointIds": { - "description": "If present, this attribute signals the deletion of certain entries in the \"mscsEndpoints\" attribute array in \"MscsInfo\", as defined in clause 6.5.3.82.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "connectivityServiceEndpoints": { - "description": "If present, this attribute signals modifications of certain entries in the \"connectivityServiceEndpoints\" attribute array in \"WanConnectionProtocolInfo\", as defined in clause 6.5.3.91.\n", - "type": "array", - "items": { - "description": "This type provides configuration data for the NFVI-PoP network gateway providing connectivity service endpoints. The connectivity service endpoints are used as endpoints by an MSCS. It shall comply with the provisions defined in Table 6.5.3.84-1.\n", - "type": "object", - "required": [ - "connectivityServiceEndpointId", - "vimId" - ], - "properties": { - "connectivityServiceEndpointId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "siteToWanLayer2ProtocolData": { - "description": "This type provides information about Layer 2 protocol specific information for the configuration of the NFVI-PoP network gateway to enable the stitching of the intra-site VN to the MSCS over the WAN. It shall comply with the provisions defined in Table 6.5.3.85-1. NOTE: Either \"networkResources\" or \"vnSegmentsIds\" shall be provided, but not both.\n", - "type": "object", - "required": [ - "layer2ConnectionInfo" - ], - "properties": { - "layer2ConnectionInfo": { - "description": "Layer 2 protocol parameters of the connectivity service endpoint (CSE).\n", - "type": "object", - "required": [ - "connectionType", - "interfaceType", - "interfaceTagging", - "encapsulationType" - ], - "properties": { - "connectionType": { - "description": "The type of connection to be established on the connectivity service point. Permitted values: - CSE: defined by the characteristics of the existing referred connectivity service point. - AGGREGATE_CSE: create an aggregation of the connectivity service endpoints.\n", - "type": "string", - "enum": [ - "CSE", - "AGGREGATE_CSE" - ] - }, - "interfaceType": { - "description": "To indicate whether to create logical interfaces on the referred connectivity service endpoint or new aggregated connectivity service endpoint. Permitted values: - PARENT: use the mapped interface to the connectivity service endpoint as is, i.e., do not create logical interfaces. - LOGICAL: create logical interfaces.\n", - "type": "string", - "enum": [ - "PARENT", - "LOGICAL" - ] - }, - "interfaceTagging": { - "description": "The type of frames to forward on the connectivity service point. Permitted values: - UNTAGGED: an interface where frames are not tagged. - TAGGED: an interface configured to forward tagged frames (i.e., enabled for VLAN tagging).\n", - "type": "string", - "enum": [ - "UNTAGGED", - "TAGGED" - ] - }, - "encapsulationType": { - "description": "The type of encapsulation. If the interfaceTagging=\"TAGGED\", either \"VLAN\" or \"VXLAN\" shall be set. Permitted values: - ETH: generic Ethernet encapsulation. - VLAN: encapsulation based on VLAN. - VXLAN: encapsulation based on VXLAN.\n", - "type": "string", - "enum": [ - "ETH", - "VLAN", - "VXLAN" - ] - }, - "vlanTaggingType": { - "description": "Type of encapsulation method for VLAN tagging. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VLAN\". Permitted values: - DOT1Q: used when packets on the CSE are encapsulated with one or a set of customer VLAN identifiers. - QINQ: used when packets on the CSE are encapsulated with multiple customer VLAN identifiers and a single\n service VLAN identifier.\n- QINANY: used when packets on the CSE have no specific customer VLAN and a service VLAN identifier is used.\n", - "type": "string", - "enum": [ - "DOT1Q", - "QINQ", - "QINANY" - ] - }, - "wanSegmentIds": { - "description": "Segment identifiers to pass on the tagged interface. Shall be present if encapsulationType=\"VLAN\" or “VXLAN\".\n", - "type": "object", - "required": [ - "wanSegmentIdValue" - ], - "properties": { - "wanSegmentIdValue": { - "description": "Identifier of the network segment (e.g., VLAN id or VNI).\n", - "type": "string" - }, - "wanSegmentIdUpperRange": { - "description": "Identifier of the upper range network segment, in case the \"wanSegmentIds\" is used to define a range.\n", - "type": "string" - } - } - }, - "vxlanConfig": { - "description": "Additional configuration needed when using VXLAN encapsulation. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VXLAN\".\n", - "type": "object", - "required": [ - "peerMode" - ], - "properties": { - "peerMode": { - "description": "Type of VXLAN access mode. Default value is \"STATIC\".\nPermitted values: - STATIC - BGP_EVPN\n", - "type": "string", - "enum": [ - "STATIC", - "BGP_EVPN" - ] - }, - "peers": { - "description": "List of IP addresses of VTEP peers when using static mode.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - } - }, - "lagInterfaceData": { - "description": "Information for setting up a LAG interface aggregating multiple connectivity service endpoints.\n", - "type": "object", - "required": [ - "aggregatedEndpoints", - "lacpActivation", - "lacpConfig" - ], - "properties": { - "aggregatedEndpoints": { - "description": "List of the connectivity service endpoints that are to be aggregated. Shall be present if connectionType=\"AGGREGATE_CSE\". In case of aggregating connectivity service endpoints, only one SiteToWanLayer2ProtocolData shall be provided for the whole set of aggregated endpoints.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "lacpActivation": { - "description": "Indicates whether to activate LACP on the interface. If \"TRUE\", the LACP is to be activated, or \"FALSE\" otherwise. Default value is \"FALSE\".\n", - "type": "boolean" - }, - "lacpConfig": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "layer2ControlProtocol": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "mtuL2": { - "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 2 (in bytes). Default value is \"1500\" (bytes).\n", - "type": "number" - }, - "virtualRoutingAndForwarding": { - "description": "Configuration related to the L2 virtual routing and forwarding (MAC-VRF).\n", - "type": "object", - "required": [ - "macVrfName" - ], - "properties": { - "macVrfName": { - "description": "Name (or identifier) of the MAC-VRF instance.\n", - "type": "string" - } - } - }, - "forwardingConfig": { - "description": "Information related to the forwarding of the VN in the NFVI-PoP to the connectivity service endpoint, if information about the VN to \"stitch\" is already known. . by the OSS/BSS. Shall not be provided otherwise, in which case the NFVO will infer the forwarding configuration based on the NS VL, or external VL, or externally-managed VL provisioning.\n", - "type": "object", - "oneOf": [ - { - "required": [ - "networkResources" - ] - }, - { - "required": [ - "vnSegmentIds" - ] - } - ], - "properties": { - "networkResources": { - "description": "Reference to the VN resource to be forwarded into/from the MSCS. See note.\n", - "type": "array", - "items": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", - "type": "object", - "required": [ - "resourceId" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", - "type": "string" - } - } - } - }, - "vnSegmentIds": { - "description": "Identifiers of the network segments of the VN resources to be forwarded into/from the MSCS.\n", - "type": "object", - "required": [ - "vnSegmentIdValue" - ], - "properties": { - "vnSegmentIdValue": { - "description": "Identifier of the network segment.\n", - "type": "string" - }, - "vnSegmentIdUpperRange": { - "description": "Identifier of the upper range network segment, in case the \"vnSegmentIds\" is used to define a range.\n", - "type": "string" - } - } - } - } - } - } - }, - "siteToWanLayer3ProtocolData": { - "description": "This type provides information about Layer 3 protocol specific information for the stitching of the intra-site VN to the multi-site connectivity service over the WAN. It shall comply with the provisions defined in Table 6.5.3.86-1.\n", - "type": "object", - "required": [ - "routingInfo" - ], - "properties": { - "logicalInterfaceIpAddress": { - "description": "IP addressing information associated to a logical interface. Shall be present if the \"interfaceType\" of the SiteToWanLayer2ProtocolData is equal to \"LOGICAL\".\n", - "type": "object", - "required": [ - "ipAddress", - "associatedSegmentId" - ], - "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" - }, - "associatedSegmentId": { - "description": "The associated segment identifier that has triggered the creation of the logical interface. The value shall be one of the values listed in the \"wanSegmentIds\" of the \"siteToWanLayer2ProtocolData\".\n", - "type": "string" - } - } - }, - "routingInfo": { - "description": "The routing information that is activated on the connectivity service endpoint. More than one \"routingInfo\" is allowed to enable stacking different routing protocols (e.g., one routing protocol for IPv4 and another one for IPv6).\n", - "type": "object", - "required": [ - "routingProtocol", - "routingAddressFamily" - ], - "properties": { - "routingProtocol": { - "description": "The routing protocol that is activated on the connectivity service endpoint. Permitted values: - BGP: used for dynamic routing BGPv4. - RIP: used for dynamic routing RIPv2. - OSPF: used for dynamic routing (OSPF version 2 for IPv4; and OSPF version 3 for IPv6). - STATIC: used for static routing. - DIRECT: used when the NFVI-PoP network is directly connected to the WAN provider network. - VRRP: used when the NFVI-PoP network is directly connected to the WAN provider network with virtual\n router redundancy protocol support (VRRP).\n", - "type": "string", - "enum": [ - "BGP", - "RIP", - "OSPF", - "STATIC", - "DIRECT", - "VRRP" - ] - }, - "staticRouting": { - "description": "Defines a static route. It shall only be present if the routingProtocol=\"STATIC\".\n", - "type": "object", - "required": [ - "ipVersion", - "ipPrefix", - "prefixSize", - "nextHop" - ], - "properties": { - "ipVersion": { - "description": "The IP version applicable to the routing entry. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "ipPrefix": { - "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" - }, - "prefixSize": { - "description": "The IP prefix size.\n", - "type": "number" - }, - "nextHop": { - "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" - } - } - }, - "routingAddressFamily": { - "description": "The IP version applicable to the dynamic routing protocol. Shall be present for dynamic routing protocols. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPv6" - ] - }, - "ospfRouting": { - "description": "Defines parameters for OSPF routing. It shall only be present if the routingProtocol=\"OSPF\".\n", - "type": "object", - "required": [ - "areaId" - ], - "properties": { - "areaId": { - "description": "The routing area identifier, e.g., a number or an IP address.\n", - "type": "string" - } - } - }, - "bgpRouting": { - "description": "Defines parameters for BGP routing. It shall only be present if the routingProtocol=\"BGP\".\n", - "type": "object", - "required": [ - "bgpAs" - ], - "properties": { - "bgpAs": { - "description": "The Autonomous System (AS) identification applicable to the BGP routing info entry.\n", - "type": "object" - }, - "bgpNeighbour": { - "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" - }, - "bgpAdditionalParam": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - }, - "routeMapsDistribution": { - "description": "Maps of routes that are permitted or denied for redistribution.\n", - "type": "object", - "required": [ - "policy", - "sequence", - "matchAndSetRule" - ], - "properties": { - "policy": { - "description": "The policy to apply to the route distribution.\nPermitted values: - PERMIT - DENY\n", - "type": "string", - "enum": [ - "PERMIT", - "DENY" - ] - }, - "sequence": { - "description": "Sequence or index number assigned to the route-map.\n", - "type": "number" - }, - "matchAndSetRule": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - } - } - }, - "mtuL3": { - "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 3 (in bytes). Default value is \"1500\" (bytes).\n", - "type": "number" - }, - "virtualRoutingAndForwarding": { - "description": "Configuration related to the virtual routing and forwarding (VRF).\n", - "type": "object", - "required": [ - "vrfName" - ], - "properties": { - "vrfName": { - "description": "Name (or identifier) of the VRF instance.\n", - "type": "string" - } - } - }, - "bfdConfig": { - "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", - "type": "object" - } - } - } - } - } - }, - "removeConnectivityServiceEndpoints": { - "description": "If present, this attribute signals the deletion of certain entries in the \"connectivityServiceEndpoints\" attribute array in \"WanConnectionProtocolInfo\", as defined in clause 6.5.3.91.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "affectedSap": { - "description": "Information about the SAP instances that were affected during the lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified SAP of a NS. It shall comply with the provisions in Table 6.5.3.7-1.\n", - "type": "object", - "required": [ - "sapInstanceId", - "sapdId" - ], - "properties": { - "sapInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "sapdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "sapName": { - "description": "Human readable name for the SAP.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - MODIFY\n", - "type": "string", - "enum": [ - "ADD", - "REMOVE", - "MODIFY" - ] - }, - "changeResult": { - "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", - "type": "string", - "enum": [ - "COMPLETED", - "ROLLED_BACK", - "FAILED" - ] - } - } - } - }, - "feasibilityCheckResult": { - "description": "The enumeration FeasibilityCheckResultType defines the permitted values to represent the result of executing a feasibility check according to the options defined in clause 6.5.4.14. It shall comply with the provisions defined in table 6.5.4.15-1.\n", - "type": "string", - "enum": [ - "FEASIBILITY_CHECK_DONE", - "FEASIBILITY_CHECK_DONE_WITH_RESERVATION" - ] - }, - "error": { - "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", - "type": "object", - "required": [ - "status", - "detail" - ], - "properties": { - "type": { - "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", - "type": "string", - "format": "URI" - }, - "title": { - "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", - "type": "string" - }, - "status": { - "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", - "type": "integer" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem.\n", - "type": "string" - }, - "instance": { - "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", - "type": "string", - "format": "URI" - } - } - }, - "_links": { - "type": "object", - "required": [ - "nsInstance" - ], - "properties": { - "nsInstance": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "subscription": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - }, - "nslcmOpOcc": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", - "type": "string", - "format": "url" - } - } - } - } - } - } - } \ No newline at end of file + "type": "object", + "description": "This type represents an NS lifecycle management operation occurrence notification, which informs the receiver of changes in the NS lifecycle caused by an NS LCM operation occurrence. The NS LCM operation occurrence may be triggered by the OSS/BSS or automatically triggered by the NFVO.", + "required": [ + "id", + "nsInstanceId", + "nsLcmOpOccId", + "operation", + "notificationType", + "subscriptionId", + "timestamp", + "notificationStatus", + "operationState", + "isAutomaticInvocation", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "nsInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "nsLcmOpOccId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operation": { + "description": "The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "UPDATE", + "TERMINATE", + "HEAL" + ] + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"NsLcmOperationOccurrenceNotification\" for this notification type.\n", + "type": "string" + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timestamp": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notificationStatus": { + "description": "Indicates whether this notification reports about the start of a NS lifecycle operation or the result of a NS lifecycle operation. Permitted values: - START: Informs about the start of the NS LCM operation occurrence. - RESULT: Informs about the final or intermediate result of the NS LCM operation occurrence.\n", + "type": "string", + "enum": [ + "START", + "RESULT" + ] + }, + "operationState": { + "description": "Value | Description ------|------------ PROCESSING | The NS LCM operation is currently in execution. COMPLETED | The NS LCM operation has been completed successfully. PARTIALLY_COMPLETED | The NS LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The NS LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The NS LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action will not succeed. OLLING_BACK | The NS LCM operation is currently being rolled back. ROLLED_BACK | The NS LCM operation has been successfully rolled back, i.e. The state of the NS prior to the original operation invocation has been restored as closely as possible.\n", + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED_TEMP", + "FAILED", + "ROLLING_BACK", + "ROLLED_BACK" + ] + }, + "isAutomaticInvocation": { + "description": "The Boolean is a data type having two values (TRUE and FALSE).\n", + "type": "boolean" + }, + "verbosity": { + "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. It shall comply with the provisions defined in table 6.5.4.11-1. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", + "type": "string", + "enum": [ + "FULL", + "SHORT" + ] + }, + "affectedVnf": { + "description": "Information about the VNF instances that were affected during the lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified VNFs.\nNOTE: At least one of the attributes \"changedVnfInfo\", \"changedExtConnectivity\" or \"modificationsTriggeredByVnfPkgChange\" or “changedCertificateInfo” shall be present. Not more than one of \"changedVnfInfo\" and \"modificationsTriggeredByVnfPkgChange\" shall be present.\n", + "type": "object", + "required": [ + "vnfInstanceId", + "vnfdId", + "vnfProfileId", + "vnfName", + "changeType", + "changeResult" + ], + "anyOf": [ + { + "required": [ + "changedExtConnectivity" + ] + }, + { + "oneOf": [ + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ] + } + ], + "properties": { + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProfileId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "vnfName": { + "description": "Name of the VNF Instance.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change Permitted values: - ADD - REMOVE - INSTANTIATE - TERMINATE - SCALE - CHANGE_FLAVOUR - HEAL - OPERATE - MODIFY_INFORMATION - CHANGE_EXTERNAL_VNF_CONNECTIVITY - CHANGE_VNFPKG\n", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "INSTANTIATE", + "TERMINATE", + "SCALE", + "CHANGE_FLAVOUR", + "HEAL", + "OPERATE", + "MODIFY_INFORMATION", + "CHANGE_EXTERNAL_VNF_CONNECTIVITY", + "CHANGE_VNFPKG" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + }, + "changedInfo": { + "description": "Information about the changed VNF instance information, including VNF configurable properties, and certificate content if applicable. When the \"changedInfo\" attribute is present, either the \"changedVnfInfo\" attribute or the \"changedExtConnectivity\" attribute or both shall be present.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ], + "oneOf": [ + { + "required": [ + "changedVnfInfo" + ] + }, + { + "required": [ + "modificationsTriggeredByVnfPkgChange" + ] + } + ], + "properties": { + "changedVnfInfo": { + "description": "This type represents the information that is requested to be modified for a VNF instance. The information to be modified shall comply with the associated NSD. EXAMPLE. The vnfPkgId attribute value for a particular VNF instance can only be updated with a value that matches the identifier value of a VNF package whose vnfdId is present in the associated profile of the NSD.\n", + "type": "object", + "required": [ + "vnfInstanceId" + ], + "properties": { + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceName": { + "description": "New value of the \"vnfInstanceName\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n", + "type": "string" + }, + "vnfInstanceDescription": { + "description": "New value of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "changedExtConnectivity": { + "description": "Information about changed external connectivity, if applicable. Only information about external VL instances that have been added or modified shall be provided. See note.\n", + "type": "array", + "items": { + "description": "This type represents information about an VNF external VL.", + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. 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.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "secondaryCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + }, + "extNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type represents the information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network\n", + "type": "object", + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], + "properties": { + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "netAttDefResource": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + }, + "associatedExtCpId": { + "description": "Identifier of the external CP of the VNF associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP of the VNF associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + }, + "currentVnfExtCpData": { + "description": "This type represents configuration information for external CPs created from a CPD.\nNOTE 1: In case this identifier refers to a CPD with trunking enabled, the external CP instances created from this CPD will represent ports in a trunk. NOTE 2: The map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified by a particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance in case it represents a subport. Deleting the last key from the map removes the affected instance of the \"VnfExtCpData\" structure from its parent data structure. NOTE 3: Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. Thus, given a particular value of the \"cpdId' attribute, there shall be one \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk, all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are connected to the same set of external VLs via the trunk. NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance different than the one that has used it before the operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396 [11]). See notes 2, 3 and 4.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of a VNF external connection point. In the case of VM-based deployment of the VNFC exposing the external CP: In case a link port is provided, the NFVO shall use that link port when connecting the VNF external CP to the external VL. • In case a link port is not provided, the NFVO or VNFM shall create a link port on the external VL, and use that link port to connect the VNF external CP to the external VL. In the case of container-based deployment of the VNFC exposing the external CP, the NFVO and VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\nNOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\"\n for an external CP instance connected or to be connected to a virtual network not\n categorized as secondary container cluster network:\n - At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for\n an external CP instance representing a subport that is to be created, or an external CP instance\n that is to be created by creating the corresponding VNFC or VNF instance during the current or\n a subsequent LCM operation, or for an existing external CP instance that is to be re-configured\n or added to a particular external virtual link.\n - If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided\n referencing a pre-created link port with pre-configured address information.\n - If both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that\n the cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\nNOTE 2: In case the NFVO manages its own identifier space, the NFVO may remap this identifier\n when communicating with the VNFM. If the NFVO knows that there can be an identifier collision\n when communicating with the VNFM by using the identifier from the OSS/BSS, the NFVO shall remap it.\nNOTE 3: The following conditions apply to the attributes \"netAttDefResourceId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n − Void.\n − At least one of these attributes shall be present for a to-be-created external CP instance or an existing\n external CP instance.\nNOTE 4: Cardinality greater than 1 is only applicable for specific cases where more than one network\n attachment definition resource is needed to fulfil the connectivity requirements of the external CP,\n e.g. to build a link redundant mated pair in SR-IOV cases. When more than one \"netAttDefResourceId\"\n is indicated, all shall belong to the same namespace as defined by the corresponding \n \"containerNamespace\" attribute in the \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\nNOTE 5: Either \"linkPortId\" or \"netAttDefResourceId\" may be included, but not both.\n", + "type": "object", + "oneOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + } + ], + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "createExtLinkPort": { + "description": "Indicates the need to create a dedicated link port for the external CP. If set to True, a link port is created. If set to False, no link port is created. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "type": "boolean" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 3.\n", + "type": "array", + "items": { + "description": "This type represents network protocol data.\nNOTE:\tThis 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.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values: - IP_OVER_ETHERNET - IP_FOR_VIRTUAL_CP See note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet. NOTE 1: 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.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "ipAddresses" + ] + }, + { + "required": [ + "macAddress" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationType": { + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values are: - VLAN: The subport uses VLAN as encapsulation type. - INHERIT: The subport gets its segmentation type from the network it is connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "type": "string", + "enum": [ + "VLAN", + "INHERIT" + ] + }, + "segmentationId": { + "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values:\n - IPV4\n - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents network address data for a virtual CP. It shall comply with the provisions defined in table 6.5.3.12a-1.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the CIS cluster is set up to be \n able to configure an external load balancer. Otherwise it shall be ignored.\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the\n container cluster will assign an IP address. \n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP\n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for\n Kubernetes® that supports configuration of address pools for load balancer services.\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time. \n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + } + } + } + } + } + }, + "netAttDefResourceId": { + "description": "Identifier of the \"NetAttDefResourceData\" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 3, 4 and 5.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "modificationsTriggeredByVnfPkgChange": { + "description": "This type represents attribute modifications that were performed by the VNFM on an \"Individual VNF instance\" resource when changing the current VNF package. The \"ModificationsTriggeredByVnfPkgChange\" data type shall comply with the provisions defined in table 6.5.3.79-1.\n", + "type": "object", + "properties": { + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfProvider": { + "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". 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.\n", + "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 the related attribute from the VNFD in the VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + } + } + }, + "changedCertificateInfo": { + "description": "Information about changed certificate, if applicable. See note\n", + "type": "array", + "items": { + "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": "Information for certificate profile.", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "securityPolicy": { + "description": "Information for security policy to be satisfied for certificate.", + "type": "array", + "items": { + "type": "object", + "description": "This type represents the input information related to certificate management.\n", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "maxValidityPeriod": { + "description": "A number as defined in IETF RFC 8259.\n", + "type": "number" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.\n", + "type": "string" + }, + "minimumKeyLength": { + "description": "A number as defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "cmfInfo": { + "type": "object", + "description": "This type provides input information related to CMF for certificate management\n", + "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.\n", + "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.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } + }, + "supportedProtocol": { + "type": "array", + "description": "Supported protocol by CMF instance. Permitted values:\n CMP\n CMPv2\n EST\n SCEP\n", + "minItems": 1, + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\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. \nNOTE : The CertificateDesc data type is defined in clause 7.1.19.2 of ETSI GS NFV IFA 011\n", + "type": "object", + "required": [ + "id", + "certficateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certficateDescId": { + "description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n", + "type": "string" + }, + "certificateType": { + "description": "Type of this certificate. Values: * VNFCI_CERT * VNFOAM_CERT\n", + "type": "string", + "enum": [ + "VNFCI_CERT", + "NFOAM_CERT" + ] + }, + "supportedCertificateManagement": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "version": { + "description": "A Version. Representation: string of variable length.\n", + "type": "string" + }, + "serialNumber": { + "description": "Serial number of this certificate\n", + "type": "integer" + }, + "signatureAlgorithm": { + "description": "Algorithm of this certificate’s signature.\n", + "type": "string" + }, + "issuer": { + "description": "Issuer of this certificate.\n", + "type": "string" + }, + "notBefore": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notAfter": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "subject": { + "description": "Subject of this certificate.\n", + "type": "string" + }, + "publicKeyAlgorithm": { + "description": "Algorithm of this certificate’s public key\n", + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + } + } + } + } + } + } + } + }, + "affectedPnf": { + "description": "Information about the PNF instances that were affected during the lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified PNFs. It shall comply with the provisions in Table 6.5.3.3-1.\n", + "type": "object", + "required": [ + "pnfId", + "pnfdId", + "pnfProfileId", + "cpInstanceId" + ], + "properties": { + "pnfId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "pnfdId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "pnfProfileId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "pnfName": { + "description": "Name of the PNF.\n", + "type": "string" + }, + "cpInstanceId": { + "description": "Identifier of the CP in the scope of the PNF.\n", + "type": "array", + "items": { + "description": "An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n", + "type": "string" + } + }, + "changeType": { + "description": "Signals the type of change. Permitted values: - ADD - REMOVE - MODIFY\n", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "MODIFY" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + } + } + } + }, + "affectedVl": { + "description": "Information about the VL instances that were affected during the lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VLs. NOTE: The resource handles of the affected NS link ports can be found by dereferencing the identifiers in the \"linkPortIds\" attribute.\n", + "type": "object", + "required": [ + "nsVirtualLinkInstanceId", + "nsVirtualLinkDescId", + "vlProfileId", + "changeType", + "changeResult" + ], + "properties": { + "nsVirtualLinkInstanceId": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + }, + "nsVirtualLinkDescId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "vlProfileId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADD * DELETE * MODIFY * ADD_LINK_PORT * REMOVE_LINK_PORT\n", + "type": "string", + "enum": [ + "ADD", + "DELETE", + "MODIFY", + "ADD_LINK_PORT", + "REMOVE_LINK_PORT" + ] + }, + "linkPortIds": { + "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references an \"NsLinkPortInfo\" structure.\nShall be set when changeType is equal to \"ADD_LINK_PORT\" or \"REMOVE_LINK_PORT\", and the related \"NsLinkPortInfo\" structures are present (case \"add\") or have been present (case \"remove\") in the \"NsVirtualLinkInfo\" structure that is represented by the \"virtualLink¬Info\" attribute in the \"NsInstance\" structure. See note.\n", + "type": "array", + "items": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + } + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: * COMPLETED * ROLLED_BACK * FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + } + } + } + }, + "affectedVnffg": { + "description": "Information about the VNFFG instances that were affected during the lifecycle operation. See note 1. \n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified VNFFG instances. It shall comply with the provisions in Table 6.5.3.5-1.\n", + "type": "object", + "required": [ + "vnffgInstanceId", + "vnffgdId" + ], + "properties": { + "vnffgInstanceId": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + }, + "vnffgdId": { + "description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: - ADD - DELETE - MODIFY\n", + "type": "string", + "enum": [ + "ADD", + "DELETE", + "MODIFY" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + } + } + } + }, + "affectedNs": { + "description": "Information about the SAP instances that were affected during the lifecycle operation.See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified nested NSs. It shall comply with the provisions in Table 6.5.3.6-1.\n", + "type": "object", + "required": [ + "nsInstanceId", + "nsdId", + "changeType", + "changeResult" + ], + "properties": { + "nsInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "nsdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - INSTANTIATE - SCALE - UPDATE - HEAL - TERMINATE\n", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "INSTANTIATE", + "SCALE", + "UPDATE", + "HEAL", + "TERMINATE" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED - PARTIALLY_COMPLETED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED", + "PARTIALLY_COMPLETED" + ] + }, + "changedInfo": { + "description": "Information about the changed NS instance information, if applicable.\n", + "type": "object", + "properties": { + "wanConnectionInfoModifications": { + "description": "Information about the modified WAN related connectivity information, if applicable.\n", + "type": "array", + "items": { + "description": "This type represents attribute modifications that were performed on WAN connection information. The attributes that can be included consist of those requested to be modified explicitly with the \"UpdateNsRequest\" data structure. It shall comply with the provisions defined in table 6.5.3.93-1.\n", + "type": "object", + "required": [ + "wanConnectionInfoId" + ], + "properties": { + "wanConnectionInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "mscsName": { + "description": "If present, this attribute signals modifications of the \"mscsName\" attribute in \"MscsInfo\" as defined in clause 6.5.3.82.\n", + "type": "string" + }, + "mscsDescription": { + "description": "If present, this attribute signals modifications of the \"mscsDescription\" attribute in \"MscsInfo\" as defined in clause 6.5.3.82.\n", + "type": "string" + }, + "mscsEndpoints": { + "description": "If present, this attribute signals modifications of certain entries in the \"mscsEndpoints\" attribute array in \"MscsInfo\", as defined in clause 6.5.3.82.\n", + "type": "array", + "items": { + "description": "This type provides encapsulates information about an MSCS endpoint of the MSCS. It shall comply with the provisions defined in table 6.5.3.83-1.\n", + "type": "object", + "required": [ + "mscsEndpointId", + "directionality", + "connectivityServiceEndpoinId" + ], + "properties": { + "mscsEndpointId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "directionality": { + "description": "Directionality of the data traffic in the context of the terminating MSCS endpoint from WAN’s perspective. Permitted values: - INBOUND: to indicate into the WAN. - OUTBOUND: to indicate from the WAN. - BOTH: to indicate bidirectional data traffic to/from the WAN.\n", + "type": "string", + "enum": [ + "INBOUND", + "OUTBOUND", + "BOTH" + ] + }, + "connectivityServiceEndpoinId": { + "description": "References the connectivity service endpoint configuration information applicable to support the MSCS endpoint. More than one connectivity service endpoint can be referred when endpoints are in LAG mode.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + } + }, + "removeMscsEndpointIds": { + "description": "If present, this attribute signals the deletion of certain entries in the \"mscsEndpoints\" attribute array in \"MscsInfo\", as defined in clause 6.5.3.82.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "connectivityServiceEndpoints": { + "description": "If present, this attribute signals modifications of certain entries in the \"connectivityServiceEndpoints\" attribute array in \"WanConnectionProtocolInfo\", as defined in clause 6.5.3.91.\n", + "type": "array", + "items": { + "description": "This type provides configuration data for the NFVI-PoP network gateway providing connectivity service endpoints. The connectivity service endpoints are used as endpoints by an MSCS. It shall comply with the provisions defined in Table 6.5.3.84-1.\n", + "type": "object", + "required": [ + "connectivityServiceEndpointId", + "vimId" + ], + "properties": { + "connectivityServiceEndpointId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "siteToWanLayer2ProtocolData": { + "description": "This type provides information about Layer 2 protocol specific information for the configuration of the NFVI-PoP network gateway to enable the stitching of the intra-site VN to the MSCS over the WAN. It shall comply with the provisions defined in Table 6.5.3.85-1. NOTE: Either \"networkResources\" or \"vnSegmentsIds\" shall be provided, but not both.\n", + "type": "object", + "required": [ + "layer2ConnectionInfo" + ], + "properties": { + "layer2ConnectionInfo": { + "description": "Layer 2 protocol parameters of the connectivity service endpoint (CSE).\n", + "type": "object", + "required": [ + "connectionType", + "interfaceType", + "interfaceTagging", + "encapsulationType" + ], + "properties": { + "connectionType": { + "description": "The type of connection to be established on the connectivity service point. Permitted values: - CSE: defined by the characteristics of the existing referred connectivity service point. - AGGREGATE_CSE: create an aggregation of the connectivity service endpoints.\n", + "type": "string", + "enum": [ + "CSE", + "AGGREGATE_CSE" + ] + }, + "interfaceType": { + "description": "To indicate whether to create logical interfaces on the referred connectivity service endpoint or new aggregated connectivity service endpoint. Permitted values: - PARENT: use the mapped interface to the connectivity service endpoint as is, i.e., do not create logical interfaces. - LOGICAL: create logical interfaces.\n", + "type": "string", + "enum": [ + "PARENT", + "LOGICAL" + ] + }, + "interfaceTagging": { + "description": "The type of frames to forward on the connectivity service point. Permitted values: - UNTAGGED: an interface where frames are not tagged. - TAGGED: an interface configured to forward tagged frames (i.e., enabled for VLAN tagging).\n", + "type": "string", + "enum": [ + "UNTAGGED", + "TAGGED" + ] + }, + "encapsulationType": { + "description": "The type of encapsulation. If the interfaceTagging=\"TAGGED\", either \"VLAN\" or \"VXLAN\" shall be set. Permitted values: - ETH: generic Ethernet encapsulation. - VLAN: encapsulation based on VLAN. - VXLAN: encapsulation based on VXLAN.\n", + "type": "string", + "enum": [ + "ETH", + "VLAN", + "VXLAN" + ] + }, + "vlanTaggingType": { + "description": "Type of encapsulation method for VLAN tagging. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VLAN\". Permitted values: - DOT1Q: used when packets on the CSE are encapsulated with one or a set of customer VLAN identifiers. - QINQ: used when packets on the CSE are encapsulated with multiple customer VLAN identifiers and a single\n service VLAN identifier.\n- QINANY: used when packets on the CSE have no specific customer VLAN and a service VLAN identifier is used.\n", + "type": "string", + "enum": [ + "DOT1Q", + "QINQ", + "QINANY" + ] + }, + "wanSegmentIds": { + "description": "Segment identifiers to pass on the tagged interface. Shall be present if encapsulationType=\"VLAN\" or “VXLAN\".\n", + "type": "object", + "required": [ + "wanSegmentIdValue" + ], + "properties": { + "wanSegmentIdValue": { + "description": "Identifier of the network segment (e.g., VLAN id or VNI).\n", + "type": "string" + }, + "wanSegmentIdUpperRange": { + "description": "Identifier of the upper range network segment, in case the \"wanSegmentIds\" is used to define a range.\n", + "type": "string" + } + } + }, + "vxlanConfig": { + "description": "Additional configuration needed when using VXLAN encapsulation. Shall be present if interfaceTagging=\"TAGGED\" and encapsulationType=\"VXLAN\".\n", + "type": "object", + "required": [ + "peerMode" + ], + "properties": { + "peerMode": { + "description": "Type of VXLAN access mode. Default value is \"STATIC\".\nPermitted values: - STATIC - BGP_EVPN\n", + "type": "string", + "enum": [ + "STATIC", + "BGP_EVPN" + ] + }, + "peers": { + "description": "List of IP addresses of VTEP peers when using static mode.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + }, + "lagInterfaceData": { + "description": "Information for setting up a LAG interface aggregating multiple connectivity service endpoints.\n", + "type": "object", + "required": [ + "aggregatedEndpoints", + "lacpActivation", + "lacpConfig" + ], + "properties": { + "aggregatedEndpoints": { + "description": "List of the connectivity service endpoints that are to be aggregated. Shall be present if connectionType=\"AGGREGATE_CSE\". In case of aggregating connectivity service endpoints, only one SiteToWanLayer2ProtocolData shall be provided for the whole set of aggregated endpoints.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "lacpActivation": { + "description": "Indicates whether to activate LACP on the interface. If \"TRUE\", the LACP is to be activated, or \"FALSE\" otherwise. Default value is \"FALSE\".\n", + "type": "boolean" + }, + "lacpConfig": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "layer2ControlProtocol": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "mtuL2": { + "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 2 (in bytes). Default value is \"1500\" (bytes).\n", + "type": "number" + }, + "virtualRoutingAndForwarding": { + "description": "Configuration related to the L2 virtual routing and forwarding (MAC-VRF).\n", + "type": "object", + "required": [ + "macVrfName" + ], + "properties": { + "macVrfName": { + "description": "Name (or identifier) of the MAC-VRF instance.\n", + "type": "string" + } + } + }, + "forwardingConfig": { + "description": "Information related to the forwarding of the VN in the NFVI-PoP to the connectivity service endpoint, if information about the VN to \"stitch\" is already known. . by the OSS/BSS. Shall not be provided otherwise, in which case the NFVO will infer the forwarding configuration based on the NS VL, or external VL, or externally-managed VL provisioning.\n", + "type": "object", + "oneOf": [ + { + "required": [ + "networkResources" + ] + }, + { + "required": [ + "vnSegmentIds" + ] + } + ], + "properties": { + "networkResources": { + "description": "Reference to the VN resource to be forwarded into/from the MSCS. See note.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\nNOTE 1:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM, the CISM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. When the container infrastructure service is a Kubernetes® instance the vimLevelResourceType is the type of resource, as would correspond to the ‘kind’ field if the resource is declared in its own Kubernetes® manifest, e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition. NOTE 2:\tWhen the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the following way: * For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide per resource type. * For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, i.e. the value of the ‘claimName’ field in the Kubernetes® manifest, or a compound name built by Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own manifest. * For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of the ‘metadata.name’ field in Kubernetes® manifest. \n", + "type": "object", + "required": [ + "resourceId" + ], + "properties": { + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Additional resource information which is specific to this resource and its type, and which is available from the VIM or the CISM or the resource provider. See note 1.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider. NOTE:\tAt least one attribute shall be present. \n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note. \n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise. \n", + "type": "string" + } + } + } + }, + "vnSegmentIds": { + "description": "Identifiers of the network segments of the VN resources to be forwarded into/from the MSCS.\n", + "type": "object", + "required": [ + "vnSegmentIdValue" + ], + "properties": { + "vnSegmentIdValue": { + "description": "Identifier of the network segment.\n", + "type": "string" + }, + "vnSegmentIdUpperRange": { + "description": "Identifier of the upper range network segment, in case the \"vnSegmentIds\" is used to define a range.\n", + "type": "string" + } + } + } + } + } + } + }, + "siteToWanLayer3ProtocolData": { + "description": "This type provides information about Layer 3 protocol specific information for the stitching of the intra-site VN to the multi-site connectivity service over the WAN. It shall comply with the provisions defined in Table 6.5.3.86-1.\n", + "type": "object", + "required": [ + "routingInfo" + ], + "properties": { + "logicalInterfaceIpAddress": { + "description": "IP addressing information associated to a logical interface. Shall be present if the \"interfaceType\" of the SiteToWanLayer2ProtocolData is equal to \"LOGICAL\".\n", + "type": "object", + "required": [ + "ipAddress", + "associatedSegmentId" + ], + "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" + }, + "associatedSegmentId": { + "description": "The associated segment identifier that has triggered the creation of the logical interface. The value shall be one of the values listed in the \"wanSegmentIds\" of the \"siteToWanLayer2ProtocolData\".\n", + "type": "string" + } + } + }, + "routingInfo": { + "description": "The routing information that is activated on the connectivity service endpoint. More than one \"routingInfo\" is allowed to enable stacking different routing protocols (e.g., one routing protocol for IPv4 and another one for IPv6).\n", + "type": "object", + "required": [ + "routingProtocol", + "routingAddressFamily" + ], + "properties": { + "routingProtocol": { + "description": "The routing protocol that is activated on the connectivity service endpoint. Permitted values: - BGP: used for dynamic routing BGPv4. - RIP: used for dynamic routing RIPv2. - OSPF: used for dynamic routing (OSPF version 2 for IPv4; and OSPF version 3 for IPv6). - STATIC: used for static routing. - DIRECT: used when the NFVI-PoP network is directly connected to the WAN provider network. - VRRP: used when the NFVI-PoP network is directly connected to the WAN provider network with virtual\n router redundancy protocol support (VRRP).\n", + "type": "string", + "enum": [ + "BGP", + "RIP", + "OSPF", + "STATIC", + "DIRECT", + "VRRP" + ] + }, + "staticRouting": { + "description": "Defines a static route. It shall only be present if the routingProtocol=\"STATIC\".\n", + "type": "object", + "required": [ + "ipVersion", + "ipPrefix", + "prefixSize", + "nextHop" + ], + "properties": { + "ipVersion": { + "description": "The IP version applicable to the routing entry. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "ipPrefix": { + "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" + }, + "prefixSize": { + "description": "The IP prefix size.\n", + "type": "number" + }, + "nextHop": { + "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" + } + } + }, + "routingAddressFamily": { + "description": "The IP version applicable to the dynamic routing protocol. Shall be present for dynamic routing protocols. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPv6" + ] + }, + "ospfRouting": { + "description": "Defines parameters for OSPF routing. It shall only be present if the routingProtocol=\"OSPF\".\n", + "type": "object", + "required": [ + "areaId" + ], + "properties": { + "areaId": { + "description": "The routing area identifier, e.g., a number or an IP address.\n", + "type": "string" + } + } + }, + "bgpRouting": { + "description": "Defines parameters for BGP routing. It shall only be present if the routingProtocol=\"BGP\".\n", + "type": "object", + "required": [ + "bgpAs" + ], + "properties": { + "bgpAs": { + "description": "The Autonomous System (AS) identification applicable to the BGP routing info entry.\n", + "type": "object" + }, + "bgpNeighbour": { + "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" + }, + "bgpAdditionalParam": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + }, + "routeMapsDistribution": { + "description": "Maps of routes that are permitted or denied for redistribution.\n", + "type": "object", + "required": [ + "policy", + "sequence", + "matchAndSetRule" + ], + "properties": { + "policy": { + "description": "The policy to apply to the route distribution.\nPermitted values: - PERMIT - DENY\n", + "type": "string", + "enum": [ + "PERMIT", + "DENY" + ] + }, + "sequence": { + "description": "Sequence or index number assigned to the route-map.\n", + "type": "number" + }, + "matchAndSetRule": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + }, + "mtuL3": { + "description": "Maximum Transmission Unit (MTU) that can be forwarded at layer 3 (in bytes). Default value is \"1500\" (bytes).\n", + "type": "number" + }, + "virtualRoutingAndForwarding": { + "description": "Configuration related to the virtual routing and forwarding (VRF).\n", + "type": "object", + "required": [ + "vrfName" + ], + "properties": { + "vrfName": { + "description": "Name (or identifier) of the VRF instance.\n", + "type": "string" + } + } + }, + "bfdConfig": { + "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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + } + } + } + } + } + }, + "removeConnectivityServiceEndpoints": { + "description": "If present, this attribute signals the deletion of certain entries in the \"connectivityServiceEndpoints\" attribute array in \"WanConnectionProtocolInfo\", as defined in clause 6.5.3.91.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "affectedSap": { + "description": "Information about the SAP instances that were affected during the lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified SAP of a NS. It shall comply with the provisions in Table 6.5.3.7-1.\n", + "type": "object", + "required": [ + "sapInstanceId", + "sapdId" + ], + "properties": { + "sapInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "sapdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "sapName": { + "description": "Human readable name for the SAP.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - MODIFY\n", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "MODIFY" + ] + }, + "changeResult": { + "description": "Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n", + "type": "string", + "enum": [ + "COMPLETED", + "ROLLED_BACK", + "FAILED" + ] + } + } + } + }, + "feasibilityCheckResult": { + "description": "The enumeration FeasibilityCheckResultType defines the permitted values to represent the result of executing a feasibility check according to the options defined in clause 6.5.4.14. It shall comply with the provisions defined in table 6.5.4.15-1.\n", + "type": "string", + "enum": [ + "FEASIBILITY_CHECK_DONE", + "FEASIBILITY_CHECK_DONE_WITH_RESERVATION" + ] + }, + "error": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } + }, + "_links": { + "type": "object", + "required": [ + "nsInstance" + ], + "properties": { + "nsInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "nslcmOpOcc": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } + } + } + } +} \ No newline at end of file -- GitLab From d94610762060f979ee493d6670cd7e7a925888ac Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Tue, 7 Jan 2025 12:40:12 +0100 Subject: [PATCH 123/141] added support for skipping intermediate notifications for lcm operations --- .../NSLCMOperationKeywords.robot | 2 +- .../NSLifecycleManagement-API/environment/variables.txt | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 60384161..1e2ce663 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -81,7 +81,7 @@ Check resource not Check Operation Notification Status is [Arguments] ${status} - Check Operation Notification NsLcmOperationOccurrenceNotification ${status} + Run Keyword If ${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 0 or (${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} == 1 and '${status}' == 'RESULT') Check Operation Notification NsLcmOperationOccurrenceNotification ${status} Check Operation Notification [Arguments] ${element} ${status}="" diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index e3846e8c..17737909 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -20,6 +20,14 @@ ${SUBSCRIPTIONS_PERMITTED_SCOPE} nslcm:v2:subscriptions ${SNAPSHOT_PERMITTED_SCOPE} nslcm:v2:subscriptions ${NOT_PERMITTED_SCOPE} nslcm:v2:invalid +################################################################################################ +##### THIS VARIABLE BELOW ALLOWS TO SKIP INTERMEDIATE LIFEFYCLE OP OCC INTERMEDIATE CHECKS ##### +##### IT IS INTENDED TO BE A KNOWN DEVIATION FROM STANDARDS ##### + +${SKIP_INTERMEDIATE_NOTIFICATION_CHECKS} 0 + +################################################################################################ + ${CONTENT_TYPE} application/json ${ACCEPT_JSON} application/json -- GitLab From 2b614d14d2fffcd350aad40a7a57821bf2d6e5cc Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 18:22:18 +0100 Subject: [PATCH 124/141] updated reference version to 5.1.1 to NS PM tests --- .../IndividualPmJob.robot | 24 ++++++------- .../IndividualReport.robot | 16 ++++----- .../IndividualThreshold.robot | 24 ++++++------- .../NotificationEndpoint.robot | 4 +-- .../Notifications.robot | 4 +-- .../NSPerformanceManagement-API/PMJobs.robot | 36 +++++++++---------- .../Thresholds.robot | 26 +++++++------- 7 files changed, 67 insertions(+), 67 deletions(-) diff --git a/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot b/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot index 706a0401..f51b0f13 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualPmJob.robot @@ -16,7 +16,7 @@ GET individual NS Performance Job ... Test title: Get individual NS Performance Job ... Test objective: The objective is to test the retrieval of an individual NS Performance monitoring job and perform a JSON schema and content validation of the collected job data structure ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ GET individual NS Performance Job with invalid resource identifier ... Test title: Get individual NS Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual NS Performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ DELETE Individual NS Performance Job with invalid resource identifier ... Test title: Delete individual NS Performance Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual NS Performance monitoring job fails when using an invalid resource identifier ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ POST Individual NS Performance Job - Method not implemented ... Test title: POST Individual NS Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NS Performance Monitoring Job ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ PUT Individual NS Performance Job - Method not implemented ... Test title: PUT Individual NS Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NS Performance Monitoring Job ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ PATCH Individual NS Performance Job ... Test title: PATCH Individual NS Performance Job ... Test objective: The objective is to test that PATCH method modify an existing new NS Performance Monitoring Job ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: Resource modified @@ -92,7 +92,7 @@ DELETE Individual NS Performance Job ... Test title: Delete Individual NS Performance Job ... Test objective: The objective is to test the deletion of an individual NS Performance monitoring job ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS Performance Job is no more available in the NFVO @@ -105,7 +105,7 @@ PATCH Individual NS Performance Job - Precondition failed ... Test title: PATCH Individual NS Performance Job - Precondition failed ... Test objective: The objective is to attempt to Modify an individual NS Performance job fails, where the precondition was not met ... Pre-conditions: The related job already exist - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The resource is not modified @@ -118,7 +118,7 @@ PATCH Individual NS Performance Job - Precondition failed HTTP Conditional Reque ... Test title: PATCH Individual NS Performance Job - Precondition failed HTTP Conditional Request Not Supported ... Test objective: The objective is to attempt to Modify an individual NS Performance job fails, where the API Producer does not support "Last-Modified" and "ETag" HTTP Headers ... Pre-conditions: The related job already exist - ... Reference: Clause 7.4.3.3.4, 4.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.3.3.4, 4.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: API Producer does not support "Last-Modified" and "ETag" HTTP Headers ... Post-Conditions: The resource is not modified @@ -131,7 +131,7 @@ PATCH Individual NS Performance Job - Unprocessable Content ... Test title: PATCH Individual NS Performance Job - Unprocessable Content ... Test objective: The objective is to test that PATCH method cannot modify an exsisting individual PM job resource when a request contains syntactically correct data but the data cannot be processed. ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -144,7 +144,7 @@ GET individual NS Performance Job with permitted authorization scope ... Test title: Get individual NS Performance Job with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual NS Performance monitoring job with permitted authorization scope ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -158,7 +158,7 @@ GET individual NS Performance Job with not permitted authorization scope ... Test title: Get individual NS Performance Job with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of an individual NS Performance monitoring job fails when using not permitted authorization scope ... Pre-conditions: A NS instance is instantiated. One or more NS Performance jobs are set in the NFVO. - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSPerformanceManagement-API/IndividualReport.robot b/SOL005/NSPerformanceManagement-API/IndividualReport.robot index 9b15875a..36844966 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualReport.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualReport.robot @@ -11,7 +11,7 @@ Get Individual Performance Report ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual NS performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance reports are set for a monitoring job in the NFVO. - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Individual Performance Report with invalid resource endpoint ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual NS performance report associated to a monitoring job fails when using an invalid resource endpoint ... Pre-conditions: A NS instance is instantiated. One or more NS performance reports are set for a monitoring job in the NFVO. - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ POST Individual Performance Report - Method not implemented ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NS performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PUT Individual Performance Report - Method not implemented ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NS performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ PATCH Individual Performance Report - Method not implemented ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NS performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ DELETE Individual Performance Report - Method not implemented ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing NS performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ Get Individual Performance Report with permitted authorization scope ... Test title: Get Individual Performance Report with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual NS performance report associated to a monitoring job with permitted authorization scope ... Pre-conditions: A NS instance is instantiated. One or more NS performance reports are set for a monitoring job in the NFVO. - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ Get Individual Performance Report with not permitted authorization scope ... Test title: Get Individual Performance Report with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of an individual NS performance report associated to a monitoring job fails when using permitted authorization scope ... Pre-conditions: A NS instance is instantiated. One or more NS performance reports are set for a monitoring job in the NFVO. - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot b/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot index 4db3987d..b264b33d 100644 --- a/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL005/NSPerformanceManagement-API/IndividualThreshold.robot @@ -18,7 +18,7 @@ GET Individual Threshold ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual NS performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Individual Threshold with invalid resource identifier ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual NS performance threshold fails when using an invalid resource identifier ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ DELETE Individual Threshold with invalid resource identifier ... Test title: DELETE Individual Threshold with invalid resource identifier ... Test objective: The objective is to test the deletion of an individual NS performance threshold ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -57,7 +57,7 @@ POST Individual Threshold - Method not implemented ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NS performance Threshold ... Pre-conditions: A NS instance is instantiated - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ PUT Individual Threshold - Method not implemented ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NS performance threshold ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ PATCH Individual Threshold ... Test title: PATCH Individual Threshold ... Test objective: The objective is to test that PATCH method modify an existing NS performance threshold ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is modified by the operation @@ -95,7 +95,7 @@ DELETE Individual Threshold ... Test title: DELETE Individual Threshold ... Test objective: The objective is to test the deletion of an individual NS performance threshold ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is not available anymore in the NFVO @@ -108,7 +108,7 @@ PATCH Individual Threshold - Precondition failed ... Test title: PATCH Individual Threshold - Precondition failed ... Test objective: The objective is to attempt to Modify an individual NS Performance threshold fails, where the precondition was not met ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is not modified by the operation @@ -122,7 +122,7 @@ PATCH Individual Threshold - Precondition failed HTTP Conditional Request Not Su ... Test title: PATCH Individual Threshold - Precondition failed HTTP Conditional Request Not Supported ... Test objective: The objective is to attempt to Modify an individual NS Performance threshold fails, where the API Producer does not support "Last-Modified" and "ETag" HTTP Headers ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.4, 4.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.6.3.4, 4.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: API Producer does not support "Last-Modified" and "ETag" HTTP Headers ... Post-Conditions: The NS performance Threshold is not modified by the operation @@ -136,7 +136,7 @@ PATCH Individual Threshold - Unprocessable Content ... Test title: PATCH Individual NS Performance Job - Unprocessable Content ... Test objective: The objective is to test that PATCH method cannot modify an exsisting individual PM job resource when a request contains syntactically correct data but the data cannot be processed. ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is not modified by the operation @@ -150,7 +150,7 @@ GET Individual Threshold with permitted authorization scope ... Test title: GET Individual Threshold with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual NS performance threshold with permitted authorization scope ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ GET Individual Threshold with not permitted authorization scope ... Test title: GET Individual Threshold with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of an individual NS performance threshold fails when using not permitted authorization scope ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSPerformanceManagement-API/NotificationEndpoint.robot b/SOL005/NSPerformanceManagement-API/NotificationEndpoint.robot index 3aae5873..945d36ad 100644 --- a/SOL005/NSPerformanceManagement-API/NotificationEndpoint.robot +++ b/SOL005/NSPerformanceManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ NS Performance Information Availability Notification ... Test title: NS Performance Information Availability Notification ... Test objective: The objective is to test that NS Performance Information Availability Notification is delivered with success to the notification consumer ... Pre-conditions: A NS performance job is created, and information availability notifications is available in the NFVO. - ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ NS Threshold Crossed Notification ... Test title: NS Threshold Crossed Notification ... Test objective: The objective is to test that NS Threshold Crossed Notification is delivered with success to the notification consumer ... Pre-conditions: A NS performance job is created, and threshold crossed notifications is available in the NFVO. - ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSPerformanceManagement-API/Notifications.robot b/SOL005/NSPerformanceManagement-API/Notifications.robot index 2884c6a5..5c715015 100644 --- a/SOL005/NSPerformanceManagement-API/Notifications.robot +++ b/SOL005/NSPerformanceManagement-API/Notifications.robot @@ -16,7 +16,7 @@ NS Performance Information Availability Notification ... Test title: NS Performance Information Availability Notification ... Test objective: The objective is to test the dispatch of NS Performance Information Availability Notification when new NS performance information is available in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS performance job is created, and a subscription for information availability notifications is available in the NFVO. - ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ NS Threshold Crossed Notification ... Test title: NS Threshold Crossed Notification ... Test objective: The objective is to test the dispatch of NS Threshold Crossed Notification when a previously set NS performance metric threshold is crossed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NS performance job is created, and a threshold subscription is available in the NFVO. - ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSPerformanceManagement-API/PMJobs.robot b/SOL005/NSPerformanceManagement-API/PMJobs.robot index 62fd7ed1..d9ddeb0a 100644 --- a/SOL005/NSPerformanceManagement-API/PMJobs.robot +++ b/SOL005/NSPerformanceManagement-API/PMJobs.robot @@ -17,7 +17,7 @@ GET all NS Performance Monitoring Jobs ... Test title: GET all NS Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available NS performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -31,7 +31,7 @@ GET NS Performance Monitoring Jobs with attribute-based filter ... Test title: GET all NS Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of NS performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ GET all NS Performance Monitoring Jobs with "all_fields" attribute selector ... Test title: GET all NS Performance Monitoring Jobs with "all_fields" attribute selector ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "all_fields" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued "all_fileds" selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -59,7 +59,7 @@ GET all NS Performance Monitoring Jobs with "exclude_default" attribute selector ... Test title: GET all NS Performance Monitoring Jobs with "exclude_default" attribute selector ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "exclude_default" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued "exclude_default" selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ GET all NS Performance Monitoring Jobs with "fields" attribute selector ... Test title: GET all NS Performance Monitoring Jobs with "fields" attribute selector ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "fields" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued "include" selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "include" attribute selector ... Post-Conditions: none @@ -87,7 +87,7 @@ GET all NS Performance Monitoring Jobs with "exclude" attribute selector ... Test title: GET all NS Performance Monitoring Jobs with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "exclude" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued "exclude" selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "exclude" attribute selector ... Post-Conditions: none @@ -101,7 +101,7 @@ GET NS Performance Monitoring Jobs with invalid attribute-based filter ... Test title: GET NS Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NS performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -114,7 +114,7 @@ GET NS Performance Monitoring Jobs with invalid resource endpoint ... Test title: GET NS Performance Monitoring Jobs with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of NS performance monitoring jobs fails when using invalid resource endpoint ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ Create new NS Performance Monitoring Job ... Test title: Create a new NS Performance Monitoring Job ... Test objective: The objective is to test the creation of a new NS performance monitoring job and perform the JSON schema validation of the returned job data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS Performance Job is successfully created on the NFVO @@ -141,7 +141,7 @@ PUT all NS Performance Monitoring Jobs - Method not implemented ... Test title: PUT all NS Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NS Performance Monitoring Jobs ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ PATCH all NS Performance Monitoring Jobs - Method not implemented ... Test title: PATCH all NS Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NS Performance Monitoring Jobs ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -165,7 +165,7 @@ DELETE all NS Performance Monitoring Jobs - Method not implemented ... Test title: DELETE all NS Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete NS Performance Monitoring Jobs ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -177,7 +177,7 @@ GET all NS Performance Monitoring Jobs as Paged Response ... Test title: GET all NS Performance Monitoring Jobs as Paged Response ... Test objective: The objective is to test the retrieval of all the available NS performance monitoring jobs as paged response. ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -190,7 +190,7 @@ GET NS Performance Monitoring Jobs - Bad Request Response too Big ... Test title: GET NS Performance Monitoring Jobs - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NS performance monitoring jobs fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -203,7 +203,7 @@ GET all NS Performance Monitoring Jobs with "fields" and "exclude_default" attri ... Test title: GET all NS Performance Monitoring Jobs with "fields" and "exclude_default" attribute selector ... Test objective: The objective is to test the retrieval of all NS performance monitoring jobs "fields" and "exclude_default" attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued selector ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The NFVO supports the use of "include" attribute selector ... Post-Conditions: none @@ -217,7 +217,7 @@ POST new NS Performance Monitoring Job - Unprocessable Content ... Test title: POST new NS Performance Monitoring Job - Unprocessable Content ... Test objective: The objective is to test the creation of a new NS performance monitoring job fails when a request contains syntactically correct data but the data cannot be processed. ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: clause 7.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: clause 7.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -230,7 +230,7 @@ GET all NS Performance Monitoring Jobs with permitted authorization scope ... Test title: GET all NS Performance Monitoring Jobs with permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available NS performance monitoring jobs with permitted authorization scope ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -244,7 +244,7 @@ GET all NS Performance Monitoring Jobs with not permitted authorization scope ... Test title: GET all NS Performance Monitoring Jobs with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of all the available NS performance monitoring jobs fails when using not permitted authorization scope ... Pre-conditions: A NS instance is instantiated. One or more NS performance jobs are set in the NFVO. - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/NSPerformanceManagement-API/Thresholds.robot b/SOL005/NSPerformanceManagement-API/Thresholds.robot index 2c71268f..f28c0075 100644 --- a/SOL005/NSPerformanceManagement-API/Thresholds.robot +++ b/SOL005/NSPerformanceManagement-API/Thresholds.robot @@ -18,7 +18,7 @@ GET All Performance Thresholds ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available NS performance thresholds and perform a JSON schema validation of the collected thresholds data structure ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -31,7 +31,7 @@ GET Performance Thresholds with attribute-based filter ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available NS performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ GET Performance Thresholds with invalid attribute-based filter ... Test title: GET Performance Thresholds with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NS performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -58,7 +58,7 @@ GET Performance Thresholds with invalid resource endpoint ... Test title: GET Performance Thresholds with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of NS performance thresholds fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -71,7 +71,7 @@ Create new Performance Threshold ... Test title: Create new Performance Threshold ... Test objective: The objective is to test the creation of a new NS performance threshold and perform the JSON schema validation of the returned threshold data structure ... Pre-conditions: A NS instance is instantiated. - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: The NS performance Threshold is successfully created on the NFVO @@ -86,7 +86,7 @@ PUT Performance Thresholds - Method not implemented ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NS performance Thresholds ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ PATCH Performance Thresholds - Method not implemented ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify NS performance Thresholds ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -110,7 +110,7 @@ DELETE Performance Thresholds - Method not implemented ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NS performance Thresholds ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ GET All Performance Thresholds as Paged Response ... Test title: GET All Performance Thresholds as Paged Response ... Test objective: The objective is to test the retrieval of all the available NS performance thresholds as paged response. ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -135,7 +135,7 @@ GET Performance Thresholds - Bad Request Response too Big ... Test title: GET Performance Thresholds - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NS performance thresholds fails because reponse is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ POST new Performance Threshold - Unprocessable Content ... Test title: POST new Performance Threshold - Unprocessable Content ... Test objective: The objective is to test the creation of a new NS performance threshold fails when a request contains syntactically correct data but the data cannot be processed. ... Pre-conditions: A NS instance is instantiated. - ... Reference: clause 7.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: clause 7.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -161,7 +161,7 @@ GET All Performance Thresholds with permitted authorization scope ... Test title: GET All Performance Thresholds with permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available NS performance thresholds with permitted authorization scope ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ GET All Performance Thresholds with not permitted authorization scope ... Test title: GET All Performance Thresholds with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of all the available NS performance thresholds fails when using not permitted authorization scope ... Pre-conditions: A NS instance is instantiated. One or more NS performance thresholds are set in the NFVO. - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 92cc5bb5cf8a5c988ba87e4c72d82083341c09b9 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Tue, 7 Jan 2025 12:15:13 +0100 Subject: [PATCH 125/141] updated PmJob and PmJobs schemas as per NFVSOL(24)000122 --- .../schemas/PmJob.schema.json | 283 +++++++++------- .../schemas/PmJobs.schema.json | 301 +++++++++++------- 2 files changed, 361 insertions(+), 223 deletions(-) diff --git a/SOL005/NSPerformanceManagement-API/schemas/PmJob.schema.json b/SOL005/NSPerformanceManagement-API/schemas/PmJob.schema.json index 6bfc2454..9f0f6725 100644 --- a/SOL005/NSPerformanceManagement-API/schemas/PmJob.schema.json +++ b/SOL005/NSPerformanceManagement-API/schemas/PmJob.schema.json @@ -2,135 +2,204 @@ "description": "This type represents a PM job.\n", "type": "object", "required": [ - "id", - "objectInstanceIds", - "criteria" + "id", + "objectType", + "objectInstanceIds", + "criteria", + "callbackUri", + "_links" ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "objectInstanceIds": { - "description": "Identifiers of the NS instances for which performance information is collected.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "criteria": { - "description": "This type represents collection criteria for PM jobs. It shall comply with the provisions defined in Table 7.5.3.3-1.\n", - "type": "object", - "required": [ - "collectionPeriod", - "reportingPeriod" - ], - "properties": { - "performanceMetric": { - "description": "This defines the types of performance metrics for the specified object instances. At least one of the two attributes (performance metric or group) shall be present.\n", + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectType": { + "description": "A string as defined in IETF RFC 8259.\n", + "type": "string" + }, + "objectInstanceIds": { + "description": "Identifiers of the measured object instances for which performance information is collected. \n", "type": "array", "items": { - "description": "This type represents stack of string values\n", - "type": "string" + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } - }, - "performanceMetricGroup": { - "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the producer that it can decompose to individual metrics. At least one of the two attributes (performance metric or group) shall be present.\n", + }, + "subObjectInstanceIds": { + "description": "Identifiers of the sub-object instances of the measured object instance for which performance information is requested to be collected. May be present if a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measured object type. If this attribute is present, the cardinality of the \"objectInstanceIds\" attribute shall be 1. If this attribute is absent and a sub-object is defined in clause 6.2 of ETSI GS NFV IFA 027 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n", "type": "array", "items": { - "description": "This type represents stack of string values\n", - "type": "string" + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" } - }, - "collectionPeriod": { - "description": "Specifies the periodicity at which the producer will collect performance information. The unit shall be seconds. At the end of each reportingPeriod, the 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. 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.\n", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "reportingPeriod": { - "description": "Specifies the periodicity at which the producer will report to the consumer. about performance information. The unit shall be seconds. At the end of each reportingPeriod, the 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. 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. \n", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "reportingBoundary": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - } - } - }, - "reports": { - "description": "Information about available reports collected by this PM job.\n", - "type": "object", - "required": [ - "href", - "readyTime", - "_links" - ], - "properties": { - "href": { + }, + "criteria": { + "description": "This type represents collection criteria for PM jobs. It shall comply with the provisions defined in Table 7.5.3.3-1.\nNOTE 1:\tAt the end of each reportingPeriod, the API producer inform the API consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one.\nNOTE 2:\tIn particular when choosing short collection and reporting periods, the number of PM jobs that can be supported depends on the capability of the producing entity. reporting period are reported together.\n", + "type": "object", + "required": [ + "collectionPeriod", + "reportingPeriod" + ], + "properties": { + "performanceMetric": { + "description": "This defines the types of performance metrics for the specified object instances. Valid values are specified as \"Measurement Name\" values in clause 7.3 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n", + "type": "array", + "items": { + "description": "A string as defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "performanceMetricGroup": { + "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the API producer that it can decompose to individual metrics. Valid values are specified as \"Measurement Group\" values in clause 7.3 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n", + "type": "array", + "items": { + "description": "A string as defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "collectionPeriod": { + "description": "Specifies the periodicity at which the API producer will collect performance information. The unit shall be seconds. See note 1 and note 2.\n", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "reportingPeriod": { + "description": "Specifies the periodicity at which the API producer will report to the API consumer. about performance information. The unit shall be seconds. See note 1 and note 2.\n", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "reportingBoundary": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + } + } + }, + "callbackUri": { "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - }, - "readyTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", - "format": "date-time" - }, - "expiryTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "fileSize": { - "description": "The size of the report file in bytes, if known.\n", - "type": "integer" - }, - "_links": { - "description": "Links for this resource.\n", + "format": "uri" + }, + "reports": { + "description": "Information about available reports collected by this PM job.\n", "type": "object", "required": [ - "self" + "href", + "readyTime", + "_links" ], "properties": { - "self": { - "description": "This type represents a link to a resource.\n", + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + }, + "readyTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "expiryTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "fileSize": { + "description": "The size of the report file in bytes, if known.\n", + "type": "integer", + "minimum": 0 + } + } + }, + "pmJobConnection": { + "description": "An access information and interface information of PM job to monitor the PM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "This type represents a MonitoringConnection.\nNOTE: The VNFM can be made aware of monitoring connection information, including their identifiers to be used by configuration means outside the scope of the present document (e.g. using relevant NFV-MANO management APIs as defined in ETSI GS NFV-SOL 009). \n", "type": "object", "required": [ - "href" + "id", + "monitoringType" ], "properties": { - "href": { - "description": "URI of the referenced resource.\n", - "type": "string", - "format": "url" - } + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way. VALUES: • VIM_CISM • EXTERNAL • PAAS\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "extra": { + "description": "Type specific additional information, if applicable.\n", + "type": "string" + } } - }, - "objects": { - "description": "Links to resources representing the NS instances for which performance information is collected. Shall be present if the NS instance information is accessible as a resource.\n", - "type": "array", - "items": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "URI of the referenced resource.\n", - "type": "string", - "format": "url" + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "objects": { + "description": "Links to resources representing the measure object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.\n", + "type": "array", + "items": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } } - } } - } } - } } - } } } \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/schemas/PmJobs.schema.json b/SOL005/NSPerformanceManagement-API/schemas/PmJobs.schema.json index 7a05ce7e..1494a7e7 100644 --- a/SOL005/NSPerformanceManagement-API/schemas/PmJobs.schema.json +++ b/SOL005/NSPerformanceManagement-API/schemas/PmJobs.schema.json @@ -1,139 +1,208 @@ { "type": "array", "items": { - "description": "This type represents a PM job.\n", - "type": "object", - "required": [ - "id", - "objectInstanceIds", - "criteria" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "objectInstanceIds": { - "description": "Identifiers of the NS instances for which performance information is collected.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "criteria": { - "description": "This type represents collection criteria for PM jobs. It shall comply with the provisions defined in Table 7.5.3.3-1.\n", - "type": "object", - "required": [ - "collectionPeriod", - "reportingPeriod" - ], - "properties": { - "performanceMetric": { - "description": "This defines the types of performance metrics for the specified object instances. At least one of the two attributes (performance metric or group) shall be present.\n", - "type": "array", - "items": { - "description": "This type represents stack of string values\n", + "description": "This type represents a PM job.\n", + "type": "object", + "required": [ + "id", + "objectType", + "objectInstanceIds", + "criteria", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - } }, - "performanceMetricGroup": { - "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the producer that it can decompose to individual metrics. At least one of the two attributes (performance metric or group) shall be present.\n", - "type": "array", - "items": { - "description": "This type represents stack of string values\n", + "objectType": { + "description": "A string as defined in IETF RFC 8259.\n", "type": "string" - } - }, - "collectionPeriod": { - "description": "Specifies the periodicity at which the producer will collect performance information. The unit shall be seconds. At the end of each reportingPeriod, the 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. 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.\n", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "reportingPeriod": { - "description": "Specifies the periodicity at which the producer will report to the consumer. about performance information. The unit shall be seconds. At the end of each reportingPeriod, the 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. 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. \n", - "type": "integer", - "minimum": 0, - "default": 0 }, - "reportingBoundary": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - } - } - }, - "reports": { - "description": "Information about available reports collected by this PM job.\n", - "type": "object", - "required": [ - "href", - "readyTime", - "_links" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" + "objectInstanceIds": { + "description": "Identifiers of the measured object instances for which performance information is collected. \n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } }, - "readyTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" + "subObjectInstanceIds": { + "description": "Identifiers of the sub-object instances of the measured object instance for which performance information is requested to be collected. May be present if a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 for the related measured object type. If this attribute is present, the cardinality of the \"objectInstanceIds\" attribute shall be 1. If this attribute is absent and a sub-object is defined in clause 6.2 of ETSI GS NFV IFA 027 for the related measured object type, measurements will be taken for all sub-object instances of the measured object instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique with respect to a NS. Representation: string of variable length.\n", + "type": "string" + } }, - "expiryTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" + "criteria": { + "description": "This type represents collection criteria for PM jobs. It shall comply with the provisions defined in Table 7.5.3.3-1.\nNOTE 1:\tAt the end of each reportingPeriod, the API producer inform the API consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one.\nNOTE 2:\tIn particular when choosing short collection and reporting periods, the number of PM jobs that can be supported depends on the capability of the producing entity. reporting period are reported together.\n", + "type": "object", + "required": [ + "collectionPeriod", + "reportingPeriod" + ], + "properties": { + "performanceMetric": { + "description": "This defines the types of performance metrics for the specified object instances. Valid values are specified as \"Measurement Name\" values in clause 7.3 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n", + "type": "array", + "items": { + "description": "A string as defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "performanceMetricGroup": { + "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the API producer that it can decompose to individual metrics. Valid values are specified as \"Measurement Group\" values in clause 7.3 of ETSI GS NFV-IFA 027. At least one of the two attributes (performance metric or group) shall be present.\n", + "type": "array", + "items": { + "description": "A string as defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "collectionPeriod": { + "description": "Specifies the periodicity at which the API producer will collect performance information. The unit shall be seconds. See note 1 and note 2.\n", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "reportingPeriod": { + "description": "Specifies the periodicity at which the API producer will report to the API consumer. about performance information. The unit shall be seconds. See note 1 and note 2.\n", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "reportingBoundary": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + } + } }, - "fileSize": { - "description": "The size of the report file in bytes, if known.\n", - "type": "integer" + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" }, - "_links": { - "description": "Links for this resource.\n", - "type": "object", - "required": [ - "self" - ], - "properties": { - "self": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { + "reports": { + "description": "Information about available reports collected by this PM job.\n", + "type": "object", + "required": [ + "href", + "readyTime", + "_links" + ], + "properties": { "href": { - "description": "URI of the referenced resource.\n", - "type": "string", - "format": "url" + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string", + "format": "uri" + }, + "readyTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "expiryTime": { + "description": "Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "fileSize": { + "description": "The size of the report file in bytes, if known.\n", + "type": "integer", + "minimum": 0 } - } - }, - "objects": { - "description": "Links to resources representing the NS instances for which performance information is collected. Shall be present if the NS instance information is accessible as a resource.\n", - "type": "array", - "items": { - "description": "This type represents a link to a resource.\n", + } + }, + "pmJobConnection": { + "description": "An access information and interface information of PM job to monitor the PM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "This type represents a MonitoringConnection.\nNOTE: The VNFM can be made aware of monitoring connection information, including their identifiers to be used by configuration means outside the scope of the present document (e.g. using relevant NFV-MANO management APIs as defined in ETSI GS NFV-SOL 009). \n", "type": "object", "required": [ - "href" + "id", + "monitoringType" ], "properties": { - "href": { - "description": "URI of the referenced resource.\n", - "type": "string", - "format": "url" - } + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way. VALUES: • VIM_CISM • EXTERNAL • PAAS\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\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 key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n", + "type": "object" + }, + "extra": { + "description": "Type specific additional information, if applicable.\n", + "type": "string" + } + } + } + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + }, + "objects": { + "description": "Links to resources representing the measure object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.\n", + "type": "array", + "items": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n", + "type": "string", + "format": "url" + } + } + } } - } } - } } - } } - } } } \ No newline at end of file -- GitLab From a584cc63251d533cba06b71f335d78433ede04ac Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 17:08:06 +0100 Subject: [PATCH 126/141] updated reference version to 5.1.1 to NFV MANO FM tests --- .../NFVMANOFaultManagement-API/Alarms.robot | 38 +++++++++---------- .../IndividualAlarm.robot | 20 +++++----- .../IndividualSubscription.robot | 16 ++++---- .../NotificationEndpoint.robot | 6 +-- .../Notifications.robot | 6 +-- .../Subscriptions.robot | 38 +++++++++---------- 6 files changed, 62 insertions(+), 62 deletions(-) diff --git a/SOL009/NFVMANOFaultManagement-API/Alarms.robot b/SOL009/NFVMANOFaultManagement-API/Alarms.robot index 01d60318..6c42372a 100644 --- a/SOL009/NFVMANOFaultManagement-API/Alarms.robot +++ b/SOL009/NFVMANOFaultManagement-API/Alarms.robot @@ -7,7 +7,7 @@ POST Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create fault management alarms on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ Get information about multiple alarms ... Test title: Get information about multiple alarms ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema of the returned alarms data structure ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ Get information about multiple alarms with filter ... Test title: Get information about multiple alarms with filter ... Test objective: The objective is to retrieve information about the alarm list and perform a JSON schema validation of the returned alarms data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ Get information about multiple alarms with invalid attribute-based filtering par ... Test title: Get information about multiple alarms with invalid attribute-based filtering parameters ... Test objective: The objective is to try to retrieve information about the alarm list with invalid filters and perform a JSON schema validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -58,7 +58,7 @@ Get information about multiple alarms as a Paged Response ... Test title: Get information about multiple alarms as a Paged Response ... Test objective: The objective is to retrieve information about the alarm list as a Paged Response. ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -71,7 +71,7 @@ Get information about multiple alarms - Bad Request Response too Big ... Test title: Get information about multiple alarms - Bad Request Response too Big ... Test objective: The objective is to try to retrieve information about the alarm list because response is too big and perform a JSON schema validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ GET information about alarms with attribute-based filter "id" ... Test title: GET information about alarms with attribute-based filter "id" ... Test objective: The objective is to retrieve information about the alarm list with alarm filter "id" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ GET information about multiple alarms with attribute-based filter "managedObject ... Test title: GET information about multiple alarms with attribute-based filter "managedObjectId" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "managedObjectId" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ GET information about multiple alarms with attribute-based filter "eventType" ... Test title: GET information about multiple alarms with attribute-based filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "eventType" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ GET information about multiple alarms with attribute-based filter "perceivedSeve ... Test title: GET information about multiple alarms with attribute-based filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "perceivedSeverity" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -140,7 +140,7 @@ GET information about multiple alarms with attribute-based filter "probableCause ... Test title: GET information about multiple alarms with attribute-based filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "probableCause" ... Pre-conditions: none - ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: Clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -154,7 +154,7 @@ Get information about multiple alarms with malformed authorization token ... Test title: Get information about multiple alarms with malformed authorization token ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when using malformed authorization token ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -166,7 +166,7 @@ Get information about multiple alarms without authorization token ... Test title: Get information about multiple alarms without authorization token ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when omitting the authorization token ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -178,7 +178,7 @@ GET information about multiple alarms with expired or revoked authorization toke ... Test title: GET information about multiple alarms with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information about the alarm list fails when using expired or revoked authorization token ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -190,7 +190,7 @@ PUT Alarms - Method not implemented ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify fault management alarms on NFV-MANO. ... Pre-conditions: none - ... Reference: clause 7.5.3.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.3.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -202,7 +202,7 @@ PATCH Alarms - Method not implemented ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify fault management alarms on NFV-MANO. ... Pre-conditions: none - ... Reference: clause 7.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -214,7 +214,7 @@ DELETE Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed for fault management alarms on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.3.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.3.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -226,7 +226,7 @@ Get information about multiple alarms with permitted authorization scope ... Test title: Get information about multiple alarms with permitted authorization scope ... Test objective: The objective is to retrieve information about the alarm list with permitted authorization scope ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -239,7 +239,7 @@ Get information about multiple alarms with not permitted authorization scope ... Test title: Get information about multiple alarms with not permitted authorization scope ... Test objective: The objective is to test that retrieve information about the alarm list fails with not permitted authorization scope ... Pre-conditions: none - ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot index 2998c682..5de083ce 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualAlarm.robot @@ -7,7 +7,7 @@ POST Individual Alarm - Method not implemented ... Test title: POST Individual Alarm - Method not implemented ... Test objective: The objective is to test that Post method is not allowed to create fault management individual alarm on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ Get information about an fault management individual alarm ... Test title: Get information about an fault management individual alarm ... Test objective: The objective is to retrieve information about an individual alarm and perform a JSON schema and content validation of the returned alarm data structure ... Pre-conditions: The related alarm exists - ... Reference: clause 7.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ Get information about an fault management individual alarm - Not Found ... Test title: Get information about an fault management individual alarm ... Test objective: The objective is to test the retrieval of information about an individual alarm fails when the resource is not present. ... Pre-conditions: none - ... Reference: clause 7.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ PUT Individual Alarm - Method not implemented ... Test title: PUT Individual Alarm - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for fault management individual alarm on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.4.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.4.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -57,7 +57,7 @@ PATCH Fault Management Individual Alarm ... Test title: PATCH Fault Management Individual Alarm ... Test objective: The objective is to Modify an individual alarm resource, and perform a JSON schema validation of the returned alarm data structure. ... Pre-conditions: The related alarm exists - ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Alarm is modified. @@ -70,7 +70,7 @@ Modify an individual alarm resource - Precondition failed ... Test title: Modify an individual alarm resource - Precondition failed ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the alarm is already in the state that is requested to be set, and perform a JSON schema validation of the returned data structure. ... Pre-conditions: The related alarm exists - ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Alarm is not modified. @@ -84,7 +84,7 @@ Modify an individual alarm resource - Conflict ... Test title: Modify an individual alarm resource - Conflict ... Test objective: The objective is to test that an individual alarm resource cannot be modified if the resource was modified by another entity , and perform a JSON schema validation of the returned data structure. ... Pre-conditions: The related alarm exists - ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Alarm is not modified. @@ -98,7 +98,7 @@ DELETE Individual Alarm - Method not implemented ... Test title: DELETE Individual Alarm - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete fault management individual alarm on NFV-MANO. ... Pre-conditions: none - ... Reference: clause 7.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -110,7 +110,7 @@ PATCH Fault Management Individual Alarm with permitted authorization scope ... Test title: PATCH Fault Management Individual Alarm with permitted authorization scope ... Test objective: The objective is to Modify an individual alarm resource with permitted authorization scope. ... Pre-conditions: The related alarm exists - ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Alarm is modified. @@ -123,7 +123,7 @@ PATCH Fault Management Individual Alarm with not permitted authorization scope ... Test title: PATCH Fault Management Individual Alarm with not permitted authorization scope ... Test objective: The objective is to test that Modification of an individual alarm resource fails with not permitted authorization scope. ... Pre-conditions: The related alarm exists - ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Alarm is modified. diff --git a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot index c6ad4f9a..0080a4f5 100644 --- a/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOFaultManagement-API/IndividualSubscription.robot @@ -7,7 +7,7 @@ Post Individual Subscription - Method not implemented ... Test title: Post Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed for fault management subscription on NFV-MANO ... Pre-conditions: none - ... Reference: clause 7.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ Get Information about an individual subscription ... Test title: Get Information about an individual subscription ... Test objective: The objective is to read an individual subscription from NFV-MANO alarms subscribed by the client and perform a JSON schema and content validation of the returned fault management individual subscription data structure ... Pre-conditions: The subscription with the given id exists - ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ Get Information about an individual subscription - Not Found ... Test title: Get Information about an individual subscription - Not Found ... Test objective: The objective is to test the retrieval of individual subscription from NFV-MANO alarms fails when the resource is not present. ... Pre-conditions: none - ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ PUT an individual subscription - Method not implemented ... Test title:PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed for fault management individual subscription on VNF ... Pre-conditions: none - ... Reference: clause 7.5.6.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.6.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ PATCH an individual subscription - Method not implemented ... Test title:PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed for fault management individual subscription on VNF ... Pre-conditions: none - ... Reference: clause 7.5.6.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.6.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ DELETE an individual subscription ... Test title:DELETE an individual subscription ... Test objective: The objective is to test that DELETE method removes individual subscription on VNF ... Pre-conditions: The Subsbcription already exists - ... Reference: clause 7.5.6.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.6.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: subscription is deleted @@ -81,7 +81,7 @@ Get Information about an individual subscription with permitted authorization sc ... Test title: Get Information about an individual subscription with permitted authorization scope ... Test objective: The objective is to read an individual subscription from NFV-MANO alarms subscribed by the client with permitted authorization scope ... Pre-conditions: The subscription with the given id exists - ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ Get Information about an individual subscription with not permitted authorizatio ... Test title: Get Information about an individual subscription with not permitted authorization scope ... Test objective: The objective is to test that reading an individual subscription from NFV-MANO alarms subscribed by the client fails with not permitted authorization scope ... Pre-conditions: The subscription with the given id exists - ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot index 14e8a77b..6e53597e 100644 --- a/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot +++ b/SOL009/NFVMANOFaultManagement-API/NotificationEndpoint.robot @@ -8,7 +8,7 @@ Alarm Notification ... Test title: Alarm Notification ... Test objective: The objective is to test that Alarm Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for alarm notification is available in the NFV-MANO. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -20,7 +20,7 @@ Alarm Cleared Notification ... Test title: Alarm Cleared Notification ... Test objective: The objective is to test that Alarm Cleared Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for alarm cleared notification is available in the NFV-MANO. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ Alarm List Rebuilt Notification ... Test title: Alarm List Rebuilt Notification ... Test objective: The objective is to test that Alarm List Rebuilt Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for alarm list rebuilt notification is available in the NFV-MANO. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/Notifications.robot b/SOL009/NFVMANOFaultManagement-API/Notifications.robot index 81970be6..a9267954 100644 --- a/SOL009/NFVMANOFaultManagement-API/Notifications.robot +++ b/SOL009/NFVMANOFaultManagement-API/Notifications.robot @@ -10,7 +10,7 @@ NFV-MANO Fault Alarm Notification ... Test title: NFV-MANO Fault Alarm Notification ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm Notification when a resource within an NFV-MANO instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NFV-MANO instance is instantiated, and a subscription for fault alarm notifications is available. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ NFV-MANO Fault Alarm Cleared Notification ... Test title: NFV-MANO Fault Alarm Cleared Notification ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm Cleared Notification when a faulty resource within an NFV-MANO instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NFV-MANO instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ NFV-MANO Fault Alarm List Rebuilt Notification ... Test title: NFV-MANO Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test the dispatch of NFV-MANO Fault Alarm List Rebuilt Notification when the NFV-MANO decides to rebuild the list of its NFV-MANO alarms, e.g. due to a corruption in the alarm storage, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A NFV-MANO instance is instantiated, one or more virtualised resource are in faulty state, and a subscription for fault alarm list rebuilt notifications is available. - ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot index f2a65fa0..c36ab513 100644 --- a/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOFaultManagement-API/Subscriptions.robot @@ -7,7 +7,7 @@ POST Create a new Fault Management alarm subscription ... Test title: POST Create a new fault management alarm subscription ... Test objective: The objective is to create a new fault management alarm subscription and perform a JSON schema validation of the returned fault management alarms subscription data structure ... Pre-conditions: No subscription with the same filter and callbackUri exists - ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: subscription is created @@ -22,7 +22,7 @@ POST Create a new alarm subscription - DUPLICATION ... Test title: POST Create a new alarm subscription - DUPLICATION ... Test objective: The objective is to create a new subscription with the NFV-MANO allowing duplication and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: the NFV-MANO allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists ... Post-Conditions: duplicated subscription is created @@ -37,7 +37,7 @@ POST Create a new alarm subscription - NO DUPLICATION ... Test title: POST Create a new alarm subscription - NO DUPLICATION ... Test objective: The objective is to create a new subscription with the NFV-MANO not allowing duplication and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: the NFV-MANO does not allow to create a duplicate subscription resource ... Post-Conditions: duplicated subscription is not created @@ -52,7 +52,7 @@ Retrieve a list of alarm subscriptions ... Test title: Retrieve a list of alarm subscriptions ... Test objective: The objective is to retrieve the list of active subscriptions and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: noe @@ -65,7 +65,7 @@ Retrieve a list of alarm subscriptions with filter ... Test title: Retrieve a list of alarm subscriptions with filter ... Test objective: The objective is to retrieve the list of active subscriptions with filter and perform a JSON schema validation of the returned fault management alarms subscription data structure. ... Pre-conditions: none - ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ Get information about multiple alarms as a Paged Response ... Test title: Get information about multiple alarms as a Paged Response ... Test objective: The objective is to retrieve information about active list subscriptions as a Paged Response ... Pre-conditions: none - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters and perform a JSON schema validation of the returned problem details data structure. ... Pre-conditions: none - ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ Get information about multiple alarms - Bad Request Response too Big ... Test title: Get information about multiple alarms - Bad Request Response too Big ... Test objective: The objective is to try to retrieve information about active list subscription to check that response is too big and perform a JSON schema validation of the returned problem details data structure ... Pre-conditions: none - ... Reference: Clause clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: Clause clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ GET Subscription with attribute-based filter "id" ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: none - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -131,7 +131,7 @@ Get subscriptions with filter "filter.notificationTypes" ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: none - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -145,7 +145,7 @@ Get subscriptions with filter "filter.perceivedSeverities" ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" ... Pre-conditions: none - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -159,7 +159,7 @@ Get subscriptions with filter "filter.eventTypes" ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" ... Pre-conditions: none - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -173,7 +173,7 @@ Get subscriptions with filter "filter.probableCauses" ... Test title: GET Subscription with attribute-based filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" ... Pre-conditions: none - ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: Clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -187,7 +187,7 @@ PUT subscriptions - Method not implemented ... Test title:PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none - ... RReference: clause 7.5.5.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... RReference: clause 7.5.5.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -199,7 +199,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none - ... Reference: clause 7.5.5.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.5.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -211,7 +211,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to for fault management subscriptions on VNF ... Pre-conditions: none - ... Reference: clause 7.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -223,7 +223,7 @@ POST Create a new Fault Management alarm subscription - Unprocessable content ... Test title: POST Create a new fault management alarm subscription - Unprocessable content ... Test objective: The objective is to test that a new fault management alarm subscription is not created if the notification endpoint is unreachable by the NFV-MANO. ... Pre-conditions: No subscription with the same filter and callbackUri exists. - ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: Notification endpoint is unreachable by the NFV-MANO. ... Post-Conditions: none @@ -236,7 +236,7 @@ Get list of alarm subscriptions with permitted authorization scope ... Test title: Retrieve a list of alarm subscriptions with permitted authorization scope ... Test objective: The objective is to retrieve the list of active subscriptions with permitted authorization scope. ... Pre-conditions: none - ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: noe @@ -249,7 +249,7 @@ Get list of alarm subscriptions with not permitted authorization scope ... Test title: Retrieve a list of alarm subscriptions with not permitted authorization scope ... Test objective: The objective is to test that retrieving the list of active subscriptions fails with not permitted authorization scope. ... Pre-conditions: none - ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 7.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: noe -- GitLab From 9ab135cc7cc0cb9719220e4ea754a823e2ac142c Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 17:08:41 +0100 Subject: [PATCH 127/141] updated reference version to 5.1.1 to NFV MANO LogM tests --- .../CompileLogTask.robot | 20 +++++----- .../IndividualLoggingJob.robot | 18 ++++----- .../IndividualReport.robot | 18 ++++----- .../IndividualSubscription.robot | 18 ++++----- .../LoggingJobs.robot | 40 +++++++++---------- .../NotificationEndpoint.robot | 2 +- .../Notifications.robot | 2 +- .../Subscriptions.robot | 34 ++++++++-------- 8 files changed, 76 insertions(+), 76 deletions(-) diff --git a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot index da7f9bea..3334660c 100644 --- a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot +++ b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot @@ -8,7 +8,7 @@ Request to compile the logged data into a file - Synchronous mode ... Test title: Request to compile the logged data into a file - Synchronous mode ... Test objective: The objective is to request to compile the logged data into a file in synchronous mode and perform a JSON schema validation on the returned log report data structure ... Pre-conditions: logging job is available - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO can decide immediately what to respond to a compile request ... Post-Conditions: none @@ -22,7 +22,7 @@ Request to compile the logged data into a file - Asynchronous mode ... Test title: Request to compile the logged data into a file - Asynchronous mode ... Test objective: The objective is to request to compile the logged data into a file in asynchronous mode ... Pre-conditions: logging job is available - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO can not decide immediately what to respond to a compile request ... Post-Conditions: log report is available to the API consumer @@ -36,7 +36,7 @@ Request to compile the logged data into a file - Already Processing ... Test title: Request to compile the logged data into a file - Already Processing ... Test objective: The objective is to request to compile the logged data into a file when a log data compilation and report creation is already ongoing, or a log report has just been created, for the specified logging job at the time of processing the request ... Pre-conditions: none - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ Request to compile the logged data into a file with unprocessable content ... Test title: Request to compile the logged data into a file with unprocessable content ... Test objective: The objective is to test that the rrequest to compile the logged data into a file fails when error in request body. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ GET Compiled Log Data - Method not implemented ... Test title: GET Compiled Log Data - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve compiled log data. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ PUT Compiled Log Data - Method not implemented ... Test title: PUT Compiled Log Data - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update compiled log data. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.6.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ PATCH Compiled Log Data - Method not implemented ... Test title: PATCH Compiled Log Data - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update compiled log data. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.6.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ DELETE Compiled Log Data - Method not implemented ... Test title: DELETE Compiled Log Data - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update compiled log data. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.6.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -110,7 +110,7 @@ Request to compile the logged data into a file with a permitted authorization sc ... Test title: Request to compile the logged data into a file with a permitted authorization scope - Synchronous mode ... Test objective: The objective is to request to compile the logged data into a file in synchronous mode with a permitted authorization scope ... Pre-conditions: logging job is available - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO can decide immediately what to respond to a compile request ... Post-Conditions: none @@ -124,7 +124,7 @@ Request to compile the logged data into a file with not permitted authorization ... Test title: Request to compile the logged data into a file with not permitted authorization scope - Synchronous mode ... Test objective: The objective is to test that requesting to compile the logged data into a file in synchronous mode fails when using not permitted authorization scope ... Pre-conditions: logging job is available - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO can decide immediately what to respond to a compile request ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot index aa42b23b..c5c5ccd9 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot @@ -7,7 +7,7 @@ POST Individual Logging Job - Method not implemented ... Test title: POST Individual Logging Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create an Indiviual Logging ... Pre-conditions: none - ... Reference: clause 8.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET individual Logging Job ... Test title: Get individual Logging Job ... Test objective: The objective is to test the retrieval of an individual logging job and perform a JSON schema validation of the collected job data structure ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -33,7 +33,7 @@ GET individual Logging Job with invalid resource identifier ... Test title: Get individual Logging Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual logging job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -46,7 +46,7 @@ PUT Individual Logging Job - Method not implemented ... Test title: PUT Individual Logging Job - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing Logging Job ... Pre-conditions: none - ... Reference: clause 8.5.4.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.4.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -58,7 +58,7 @@ PATCH Individual Logging Job - Method not implemented ... Test title: PATCH Individual Logging Job - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new Logging Job ... Pre-conditions: none - ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ DELETE Individual Logging Job ... Test title: DELETE Individual Logging Job ... Test objective: The objective is to test the deletion of an individual logging job ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Logging Job is no more available. @@ -83,7 +83,7 @@ DELETE Individual Logging Job with invalid resource identifier ... Test title: DELETE Individual Logging Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual logging job fails when using an invalid resource identifier ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -96,7 +96,7 @@ DELETE Individual Logging Job with permitted authorization scope ... Test title: DELETE Individual Logging Job with permitted authorization scope ... Test objective: The objective is to test the deletion of an individual logging job with permitted authorization scope ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Logging Job is no more available. @@ -109,7 +109,7 @@ DELETE Individual Logging Job with not permitted authorization scope ... Test title: DELETE Individual Logging Job with not permitted authorization scope ... Test objective: The objective is to test that the deletion of an individual logging job fails when using a not permitted authorization scope ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Logging Job is no more available. diff --git a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot index b80d1802..531a1138 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot @@ -7,7 +7,7 @@ POST Individual Log Report - Method not implemented ... Test title: POST Individual Log Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new log report. ... Pre-conditions: none - ... Reference: clause 8.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ Get Individual Log Report ... Test title: Get Individual Log Report ... Test objective: The objective is to test the retrieval of an individual log report and perform a JSON schema validation of the collected report data structure ... Pre-conditions: One or more log reports are set. - ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ Get Individual Log Report (asynchronous) ... Test title: Get Individual Log Report (asynchronous) ... Test objective: The objective is to test the retrieval of an individual log report is ongoing and no log report is available yet. ... Pre-conditions: One or more log reports are set. - ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ Get Individual Log Report with invalid resource endpoint ... Test title: Get Individual Log Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual log report fails when using an invalid resource endpoint. ... Pre-conditions: One or more log reports are set. - ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -57,7 +57,7 @@ PUT Individual Log Report - Method not implemented ... Test title: PUT Individual Log Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing log report. ... Pre-conditions: none - ... Reference: clause 8.5.5.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.5.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ PATCH Individual Log Report - Method not implemented ... Test title: PATCH Individual Log Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existinglog report. ... Pre-conditions: none - ... Reference: clause 8.5.5.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.5.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ DELETE Individual Log Report - Method not implemented ... Test title: DELETE Individual Log Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing log report. ... Pre-conditions: none - ... Reference: clause 8.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ Get Individual Log Report with permitted authorization scope ... Test title: Get Individual Log Report with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual log report with permitted authorization scope ... Pre-conditions: One or more log reports are set. - ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ Get Individual Log Report with not permitted authorization scope ... Test title: Get Individual Log Report with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of an individual log report fails when using not permitted authorization scope ... Pre-conditions: One or more log reports are set. - ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot index 3f6565f3..7d9895b0 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot @@ -7,7 +7,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the retrieval of individual subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -21,7 +21,7 @@ GET Individual Subscription - invalid resource identifier ... Test title: GET Individual Subscription - invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual subscription fails when using an invalid resource identifier ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -34,7 +34,7 @@ DELETE Individual Subscription ... Test title: DELETE Individual Subscription ... Test objective: The objective is to test the deletion of an individual subscription ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The is not available anymore in the NFV-MANO @@ -47,7 +47,7 @@ DELETE Individual Subscription - invalid resource identifier ... Test title: DELETE Individual Subscription - invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual subscription fails when using an invalid resource identifier ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -59,7 +59,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Subscription ... Pre-conditions: none - ... Reference: clause 8.5.8.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.8.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -71,7 +71,7 @@ PUT Individual Subscription - Method not implemented ... Test title: PUT Individual Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing subscription ... Pre-conditions: none - ... Reference: clause 8.5.8.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.8.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ PATCH Individual Subscription - Method not implemented ... Test title: PATCH Individual Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing subscription ... Pre-conditions: none - ... Reference: clause 8.5.8.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.8.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ GET Individual Subscription with permitted authorization scope ... Test title: GET Individual Subscription with permitted authorization scope ... Test objective: The objective is to test the retrieval of individual subscription with permitted authorization scope ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ GET Individual Subscription with not permitted authorization scope ... Test title: GET Individual Subscription with not permitted authorization scope ... Test objective: The objective is to test that the retrieval of individual subscription fails when using not permitted authorization scope ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot index 7e427b78..4e1e7585 100644 --- a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot +++ b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot @@ -7,7 +7,7 @@ POST Create a new logging job ... Test title: POST Create a new logging job ... Test objective: The objective is to create a new logging job, and perform the JSON schema validation of the operation HTTP response. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: logging job created @@ -22,7 +22,7 @@ GET information about logging jobs ... Test title: GET information logging jobs ... Test objective: The objective is to retrieve information about logging jobs, and perform the JSON schema validation of the operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -35,7 +35,7 @@ GET Logging jobs - invalid attribute-based filter ... Test title: GET Logging jobs - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of logging jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ GET Logging jobs - invalid attribute selector ... Test title: GET Logging jobs - invalid attribute selector ... Test objective: The objective is to test that the retrieval of logging jobs fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ GET Logging jobs - Bad Request Response too Big ... Test title: GET Logging jobs - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of Logging job fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ GET information about logging jobs with attribute-based filter ... Test title: GET information about logging jobs with attribute-based filter ... Test objective: The objective is to retrieve information about the logging jobs with attribute filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ GET information about logging jobs with "all_fields" attribute selector ... Test title: GET information about logging jobs with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about logging jobs with "all_fields" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ GET information about Logging Jobs with "exclude_default" attribute selector ... Test title: GET information about Logging Jobs with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about logging jobs with "exclude_default" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ GET information about Logging Jobs with "fields" attribute selector ... Test title: GET information about Logging Jobs with fields attribute selector ... Test objective: The objective is to retrieve information about Logging Jobs with fields attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ GET information about Logging Jobs with "exclude_fields" attribute selector ... Test title: GET information about Logging Jobs with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the Logging Jobs with "exclude_fields" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -139,7 +139,7 @@ GET information about Logging Jobs with "fields" and "exclude_default" attribute ... Test title: GET information about Logging Jobs with fields and exclude_default attribute selector ... Test objective: The objective is to retrieve information about Logging Jobs with fields and exclude_default attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -152,7 +152,7 @@ GET information about Logging Jobs with Paged Response ... Test title: GET information about Logging Jobs with Paged Response ... Test objective: The objective is to query information about Logging Jobs to get Paged Response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -165,7 +165,7 @@ GET information about Logging Jobs with malformed authorization token ... Test title: GET information about Logging Jobs with malformed authorization token ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when using malformed authorization token. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -177,7 +177,7 @@ GET information about Logging Jobs without authorization token ... Test title: GET information about Logging Jobs without authorization token ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when omitting the authorization token. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -189,7 +189,7 @@ GET information about Logging Jobs with expired or revoked authorization token ... Test title: GET information about Logging Jobs with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when using expired or revoked authorization token. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -201,7 +201,7 @@ PUT Logging Jobs - Method not implemented ... Test title: PUT Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: clause 8.5.3.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -213,7 +213,7 @@ PATCH Logging Jobs - Method not implemented ... Test title: PATCH Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: clause 8.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -225,7 +225,7 @@ DELETE Logging Jobs - Method not implemented ... Test title: DELETE Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: clause 8.5.3.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -237,7 +237,7 @@ POST Create a new logging job with permitted authorization scope ... Test title: POST Create a new logging job with permitted authorization scope ... Test objective: The objective is to create a new logging job with permitted authorization scope. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: logging job created @@ -252,7 +252,7 @@ POST Create a new logging job with not permitted authorization scope ... Test title: POST Create a new logging job with not permitted authorization scope ... Test objective: The objective is to test that the creation of a new logging job fails when a not permitted authorization scope is used. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot index acade9e2..097ff823 100644 --- a/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot +++ b/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot @@ -8,7 +8,7 @@ Log Report Available Notification ... Test title: Log Report Available Notification ... Test objective: The objective is to test that Log Report Available Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for log report available notification is available in the NFV-MANO. - ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/Notifications.robot b/SOL009/NFVMANOLogManagement-API/Notifications.robot index 9159d9ec..a65298c6 100644 --- a/SOL009/NFVMANOLogManagement-API/Notifications.robot +++ b/SOL009/NFVMANOLogManagement-API/Notifications.robot @@ -9,7 +9,7 @@ Log Report Avaliable Notification ... Test title: Log Report Avaliable Notification ... Test objective: The objective is to test the dispatch of Log Report Avaliable Notification when new log report is available in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: none - ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot index 2ab8c38c..69249ddf 100644 --- a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot @@ -9,7 +9,7 @@ GET all Subscriptions ... Test title: GET all Subscriptions ... Test objective: The objective is to test the retrieval list of active subscriptions list to log management notifications and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -22,7 +22,7 @@ GET Subscriptions with attribute-based filter ... Test title: GET Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of active subscriptions list to log management notifications using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -35,7 +35,7 @@ GET Subscriptions with Paged Response ... Test title: GET Subscriptions with Paged Response ... Test objective: The objective is to query information of active subscriptions list to log management notifications to get Paged Response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ GET Subscriptions - invalid attribute-based filter ... Test title: GET Subscriptions - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ GET Subscriptions - Bad Request Response too Big ... Test title: GET Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ GET Subscriptions - invalid resource endpoint ... Test title: GET Subscriptions - invalid resource endpoint ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when using invalid resource endpoint. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ GET Subscription with attribute-based filter "id" ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: none - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ Get subscriptions with filter "filter.notificationTypes" ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: none - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ POST Create new Subscription ... Test title: POST Create new Subscription ... Test objective: The objective is to test the creation of a new subscription to log management notification and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The subscription is successfully set and it matches the issued subscription @@ -131,7 +131,7 @@ POST Create request for duplicated Subscription not creating duplicated subscrip ... Test title: POST Create request for duplicated Subscription not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated subscription failed and check that no new subscription is created and a link to the original subscription is returned ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing Subscription returned is available in the NFV-MANO @@ -147,7 +147,7 @@ POST Create request for duplicated Subscription creating duplicated subscription ... Test title: POST Create request for duplicated Subscription creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated subscription is successfully set and it matches the issued subscription @@ -162,7 +162,7 @@ PUT Subscriptions - Method not implemented ... Test title: PUT Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions ... Pre-conditions: none - ... Reference: clause 8.5.7.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ PATCH Subscriptions - Method not implemented ... Test title: PATCH Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions ... Pre-conditions: none - ... Reference: clause 8.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -186,7 +186,7 @@ DELETE Subscriptions - Method not implemented ... Test title: DELETE Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions ... Pre-conditions: none - ... Reference: clause 8.5.7.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -198,7 +198,7 @@ POST Create new Subscription - Unprocessable content ... Test title: POST Create new Subscription - Unprocessable content ... Test objective: The objective is to test that a new log management subscription is not created if the notification endpoint is unreachable by the NFV-MANO. ... Pre-conditions: none - ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: Notification endpoint is unreachable by the NFV-MANO. ... Post-Conditions: none @@ -211,7 +211,7 @@ GET all Subscriptions with permitted authorization scope ... Test title: GET all Subscriptions with permitted authorization scope ... Test objective: The objective is to test the retrieval list of active subscriptions list to log management notifications with permitted authorization scope ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -224,7 +224,7 @@ GET all Subscriptions with not permitted authorization scope ... Test title: GET all Subscriptions with not permitted authorization scope ... Test objective: The objective is to test that the retrieval list of active subscriptions list to log management notifications fails when using not permitted authorization scope ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none -- GitLab From 102548355cae0cfb3e175dcd7c463dc6e8b34b24 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 19:02:54 +0100 Subject: [PATCH 128/141] added missing test step for Location Header in Test IDs: 8.3.4.5.9 and 8.3.4.5.11 --- SOL009/NFVMANOLogManagement-API/Subscriptions.robot | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot index 69249ddf..a44eb369 100644 --- a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot @@ -122,6 +122,7 @@ POST Create new Subscription Send Post Request for Subscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is LogmSubscription + Check HTTP Response Header Contains Location Check HTTP Response Body LogmSubscription Attributes Values Match the Issued Subscription Check Postcondition Subscription Is Set @@ -154,6 +155,7 @@ POST Create request for duplicated Subscription creating duplicated subscription Send Post Request for Duplicated Subscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is PmSubscription + Check HTTP Response Header Contains Location Check HTTP Response Body LogmSubscription Attributes Values Match the Issued Subscription Check Postcondition Subscription Is Set -- GitLab From ea4cb473fcce2f3dec592e4c0220e8dfabbcdf19 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Fri, 17 Jan 2025 16:55:52 +0100 Subject: [PATCH 129/141] updated missing test step for Location Header in Test IDs: 8.3.4.5.9 and 8.3.4.5.11 --- .../NFVMANOLogManagementKeywords.robot | 11 ++++++----- SOL009/NFVMANOLogManagement-API/Subscriptions.robot | 2 ++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index d9cdae4f..084e56bd 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -22,7 +22,12 @@ Check HTTP Response Header Contains [Arguments] ${CONTENT_TYPE} Should Contain ${response['headers']} ${CONTENT_TYPE} Log Header is present - + Run Keyword If '${CONTENT_TYPE}' == 'Location' Check Existence of Location Header Resource +Check Existence of Location Header Resource + GET ${response['headers']['Location']} + Log Validate Status code + Integer response status 200 + Check HTTP Response Body Json Schema Is [Arguments] ${input} Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json @@ -642,10 +647,6 @@ Check Postcondition Subscription Resource Returned in Location Header Is Availab ${result}= Output response body Validate Json LogmSubscription.schema.json ${result} Log Validated LogmSubscription schema - ${body}= Get File jsons/subscriptions.json - ${subscription}= evaluate json.loads('''${body}''') json - Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']} - Log Validated Issued subscription is same as original Send Put Request for Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the NFV-MANO shall return a "405 Method diff --git a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot index a44eb369..103e6066 100644 --- a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot @@ -123,6 +123,7 @@ POST Create new Subscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is LogmSubscription Check HTTP Response Header Contains Location + Check Postcondition Subscription Resource Returned in Location Header Is Available Check HTTP Response Body LogmSubscription Attributes Values Match the Issued Subscription Check Postcondition Subscription Is Set @@ -156,6 +157,7 @@ POST Create request for duplicated Subscription creating duplicated subscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is PmSubscription Check HTTP Response Header Contains Location + Check Postcondition Subscription Resource Returned in Location Header Is Available Check HTTP Response Body LogmSubscription Attributes Values Match the Issued Subscription Check Postcondition Subscription Is Set -- GitLab From fea64379b94bf39403915331dc09e1fa8bd1584e Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 17:07:14 +0100 Subject: [PATCH 130/141] updated reference version to 5.1.1 to NFV MANO PM tests --- .../IndividualPmJob.robot | 22 +++++----- .../IndividualReport.robot | 16 +++---- .../IndividualThreshold.robot | 22 +++++----- .../NotificationEndpoint.robot | 4 +- .../Notifications.robot | 4 +- .../PMJobs.robot | 42 +++++++++---------- .../Thresholds.robot | 24 +++++------ 7 files changed, 67 insertions(+), 67 deletions(-) diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot index 720195b4..dffecf06 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualPmJob.robot @@ -7,7 +7,7 @@ POST Individual NFV-MANO Performance Job - Method not implemented ... Test title: POST Individual NFV-MANO Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NFV-MANO Performance Monitoring Job ... Pre-conditions: none - ... Reference: clause 6.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET individual NFV-MANO Performance Job ... Test title: Get individual NFV-MANO Performance Job ... Test objective: The objective is to test the retrieval of an individual performance monitoring job and perform a JSON schema validation of the collected job data structure ... Pre-conditions: A NFV-MANO instance is instantiated. - ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -33,7 +33,7 @@ GET individual NFV-MANO Performance Job with invalid resource identifier ... Test title: Get individual NFV-MANO Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -46,7 +46,7 @@ PUT Individual NFV-MANO Performance Job - Method not implemented ... Test title: PUT Individual NFV-MANO Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NFV-MANO Performance Monitoring Job ... Pre-conditions: none - ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -58,7 +58,7 @@ PATCH Individual NFV-MANO Performance Job ... Test title: PATCH Individual NFV-MANO Performance Job ... Test objective: The objective is to test that PATCH method modify an existing individual NFV-MANO Performance Monitoring Job ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: PM Job resource is modified. @@ -71,7 +71,7 @@ DELETE Individual NFV-MANO Performance Job ... Test title: Delete Individual NFV-MANO Performance Job ... Test objective: The objective is to test the deletion of an individual performance monitoring job ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO Performance Job is no more available. @@ -84,7 +84,7 @@ DELETE Individual NFV-MANO Performance Job with invalid resource identifier ... Test title: Delete individual NFV-MANO Performance Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual NFV-MANO performance monitoring job fails when using an invalid resource identifier ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -96,7 +96,7 @@ PATCH Individual NFV-MANO Performance Job - Precondition failed ... Test title: PATCH Individual NFV-MANO Performance Job - Precondition failed ... Test objective: The objective is to test that the PATCH method cannot modify an individual NFV-MANO Performance job where the precondition was not met. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: PM Job resource is not modified. @@ -109,7 +109,7 @@ PATCH Individual NFV-MANO Performance Job - Unprocessable content ... Test title: PATCH Individual NFV-MANO Performance Job - Unprocessable content ... Test objective: The objective is to test that PATCH method cannot modify an exsisting individual PM job resource when a request contains syntactically correct data but the data cannot be processed. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: PM Job resource is not modified. @@ -122,7 +122,7 @@ PATCH Individual NFV-MANO Performance Job with permitted authorization scope ... Test title: PATCH Individual NFV-MANO Performance Job with permitted authorization scope ... Test objective: The objective is to test that PATCH method with permitted authorization scope modify an existing individual NFV-MANO Performance Monitoring Job ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: PM Job resource is modified. @@ -135,7 +135,7 @@ PATCH Individual NFV-MANO Performance Job with not permitted authorization scope ... Test title: PATCH Individual NFV-MANO Performance Job with not permitted authorization scope ... Test objective: The objective is to test that PATCH method with not permitted authorization scope fails ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: PM Job resource is modified. diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot index 08af11fe..96dca371 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualReport.robot @@ -7,7 +7,7 @@ POST Individual Performance Report - Method not implemented ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new NFV-MANO performance report within a monitoring job. ... Pre-conditions: none - ... Reference: clause 6.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ Get Individual Performance Report ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. - ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ Get Individual Performance Report with invalid resource endpoint ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual NFV-MANO performance report associated to a monitoring job fails when using an invalid resource endpoint. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. - ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ PUT Individual Performance Report - Method not implemented ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing NFV-MANO performance report within a monitoring job. ... Pre-conditions: none - ... Reference: clause 6.5.5.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.5.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ PATCH Individual Performance Report - Method not implemented ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing NFV-MANO performance report within a monitoring job. ... Pre-conditions: none - ... Reference: clause 6.5.5.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.5.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ DELETE Individual Performance Report - Method not implemented ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing NFV-MANO performance report within a monitoring job ... Pre-conditions: none - ... Reference: clause 6.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANOM ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ Get Individual Performance Report with permitted authorization scope ... Test title: Get Individual Performance Report with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual performance report associated to a monitoring job with permitted authorization scope ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. - ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ Get Individual Performance Report with not permitted authorization scope ... Test title: Get Individual Performance Report with not permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual performance report associated to a monitoring job fails with not permitted authorization scope ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance reports are set for a monitoring job. - ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot index ae9cff74..bc0796fa 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/IndividualThreshold.robot @@ -7,7 +7,7 @@ POST Individual Threshold - Method not implemented ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Performance Threshold ... Pre-conditions: none - ... Reference: clause 6.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Individual Threshold ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual NFV-MANO performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -33,7 +33,7 @@ GET Individual Threshold with invalid resource identifier ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual performance threshold fails when using an invalid resource identifier ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance jobs are set. - ... Reference: clause 6.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ PUT Individual Threshold - Method not implemented ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing Performance threshold ... Pre-conditions: none - ... Reference: clause 6.5.7.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.7.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -57,7 +57,7 @@ PATCH Individual Threshold ... Test title: PATCH Individual Threshold ... Test objective: The objective is to test that PATCH method modify an existing NFV_MANO performance threshold. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Threshold resource is modified. @@ -70,7 +70,7 @@ DELETE Individual Threshold ... Test title: DELETE Individual Threshold ... Test objective: The objective is to test the deletion of an individual performance threshold ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Performance Threshold is not available anymore in the NFV-MANO @@ -83,7 +83,7 @@ DELETE Individual Threshold with invalid resource identifier ... Test title: DELETE Individual Threshold with invalid resource identifier ... Test objective: The objective is to test the deletion of an individual performance threshold ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.7.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ PATCH Individual Threshold - Precondition failed ... Test title: PATCH Individual Threshold - Precondition failed ... Test objective: The objective is to test that the PATCH method cannot modify an individual NFV-MANO threshold where the precondition was not met. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Threshold resource is not modified. @@ -108,7 +108,7 @@ PATCH Individual Threshold - Unprocessable content ... Test title: PATCH Individual Threshold - Unprocessable content ... Test objective: The objective is to test that PATCH method cannot modify an exsisting individual threshold resource when a request contains syntactically correct data but the data cannot be processed. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Threshold resource is not modified. @@ -121,7 +121,7 @@ PATCH Individual Threshold with permitted authorization scope ... Test title: PATCH Individual Threshold with permitted authorization scope ... Test objective: The objective is to test that PATCH method modify an existing NFV_MANO performance threshold with permitted authorization scope. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Threshold resource is modified. @@ -134,7 +134,7 @@ PATCH Individual Threshold with not permitted authorization scope ... Test title: PATCH Individual Threshold with not permitted authorization scope ... Test objective: The objective is to test that PATCH method fails with not permitted authorization scope. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more performance thresholds are set. - ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Threshold resource is modified. diff --git a/SOL009/NFVMANOPerformanceManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOPerformanceManagement-API/NotificationEndpoint.robot index 23b5b9ac..e1c2660c 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/NotificationEndpoint.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/NotificationEndpoint.robot @@ -8,7 +8,7 @@ Performance Information Available Notification ... Test title: Performance Information Available Notification ... Test objective: The objective is to test that Performance Available Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for performance available notification is available in the NFV-MANO. - ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -21,7 +21,7 @@ Threshold Crossed Notification ... Test title: Threshold Crossed Notification ... Test objective: The objective is to test that Threshold Crossed Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for threshold crosssed notification is available in the NFV-MANO. - ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/Notifications.robot b/SOL009/NFVMANOPerformanceManagement-API/Notifications.robot index 7287db0a..cfff4995 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Notifications.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Notifications.robot @@ -9,7 +9,7 @@ Performance Information Availability Notification ... Test title: Performance Information Availability Notification ... Test objective: The objective is to test the dispatch of Performance Information Availability Notification when new performance information is available in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A performance job is created, and a subscription for information availability notifications is available in the NFV-MANO. - ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -22,7 +22,7 @@ Threshold Crossed Notification ... Test title: Threshold Crossed Notification ... Test objective: The objective is to test the dispatch of Threshold Crossed Notification when a previously set performance metric threshold is crossed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A performance job is created, and a threshold subscription is available in the NFV-MANO. - ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot index 818f5330..f7da29b0 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot @@ -7,7 +7,7 @@ POST Create new NFV-MANO Performance Monitoring Job ... Test title: POST Create a new NFV-MANO Performance Monitoring Job ... Test objective: The objective is to test the creation of a new NFV-MANO performance monitoring job and perform the JSON schema validation of the returned job data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO Performance Job is successfully created on the NFV-MANO @@ -21,7 +21,7 @@ GET all NFV-MANO Performance Monitoring Jobs ... Test title: GET all NFV-MANO Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance monitoring jobs and perform a JSON schema validation ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -34,7 +34,7 @@ GET NFV-MANO Performance Monitoring Jobs with attribute-based filter ... Test title: GET all NFV-MANO Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of NFV-MANO performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -47,7 +47,7 @@ GET all NFV-MANO Performance Monitoring Jobs with all_fields attribute selector ... Test title: GET all NFV-MANO Performance Monitoring Jobs with all_fields attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs all_fields attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ GET all NFV-MANO Performance Monitoring Jobs with exclude_default attribute sele ... Test title: GET all NFV-MANO Performance Monitoring Jobs with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ GET all NFV-MANO Performance Monitoring Jobs with fields attribute selector ... Test title: GET all NFV-MANO Performance Monitoring Jobs with fields attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs fields attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO supports the use of fields attribute selector ... Post-Conditions: none @@ -86,7 +86,7 @@ GET all NFV-MANO Performance Monitoring Jobs with exclude_fields attribute selec ... Test title: GET all NFV-MANO Performance Monitoring Jobs with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of all NFV-MANO performance monitoring jobs exclude_fields attribute selector, perform a JSON schema validation of the collected jobs data structure ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -99,7 +99,7 @@ GET NFV-MANO Performance Monitoring Jobs with invalid attribute-based filter ... Test title: GET NFV-MANO Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NFV-MANO performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ GET NFV-MANO Performance Monitoring Jobs with invalid attribute selector ... Test title: GET NFV-MANO Performance Monitoring Jobs with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of NFV-MANO performance monitoring jobs fails with invalid attribute selector ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -125,7 +125,7 @@ GET information about multiple Performance Monitoring Jobs to get Paged Response ... Test title: GET information about multiple Performance Monitoring Jobs to get Paged Response ... Test objective: The objective is to retrieve information about the performance monitoring jobs to get paged response ... Pre-conditions: none - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -138,7 +138,7 @@ GET information about multiple Performance Monitoring Jobs for Bad Request Respo ... Test title: GET information about multiple Performance Monitoring Jobs for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about performance monitoring jobs when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: none - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -151,7 +151,7 @@ GET information about multiple Performance Monitoring Jobs with "fields" and "ex ... Test title: GET all NFV-MANO Performance Monitoring Jobs with "fields" and "exclude_default" attribute selector ... Test objective: The objective is to retrieve all performance monitoring jobs with fields and exclude default attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ Get information about multiple Performance Monitoring Jobs with malformed author ... Test title: Get information about multiple Performance Monitoring Jobs with malformed authorization token ... Test objective: The objective is to test that the retrieval of information about Performance Monitoring Jobs fails when using malformed authorization token ... Pre-conditions: none - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -176,7 +176,7 @@ Get information about multiple Performance Monitoring Jobs without authorization ... Test title: Get information about multiple Performance Monitoring Jobs without authorization token ... Test objective: The objective is to test that the retrieval of information about Performance Monitoring Jobs fails when omitting the authorization token ... Pre-conditions: none - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -188,7 +188,7 @@ GET information about multiple Performance Monitoring Jobs with expired or revok ... Test title: GET information about multiple Performance Monitoring Jobs with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information about Performance Monitoring Jobs fails when using expired or revoked authorization token ... Pre-conditions: One or more Network Service Descriptors are onboarded in the NFVO - ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -200,7 +200,7 @@ PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test title: PUT all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NFV-MANO Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: clause 6.5.3.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -212,7 +212,7 @@ PATCH all NFV-MANO Performance Monitoring Jobs - (Method not implemented) ... Test title: PATCH all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update NFV-MANO Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: clause 6.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -224,7 +224,7 @@ DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test title: DELETE all NFV-MANO Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NFV-MANO Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: clause 6.5.3.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -236,7 +236,7 @@ POST Create new NFV-MANO Performance Monitoring Job - Unreachable Notification E ... Test title: POST Create a new NFV-MANO Performance Monitoring Job ... Test objective: The objective is to test that a new NFV_MANO Performance Monitoring Job is not created if the notification endpoint is unreachable by the NFV-MANO. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: Notification endpoint is unreachable by the NFV-MANO. ... Post-Conditions: none @@ -249,7 +249,7 @@ POST Create new NFV-MANO Performance Monitoring Job with permitted authorization ... Test title: POST Create a new NFV-MANO Performance Monitoring Job with permitted authorization scope ... Test objective: The objective is to test the creation of a new NFV-MANO performance monitoring job with permitted authorization scope ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO Performance Job is successfully created on the NFV-MANO @@ -263,7 +263,7 @@ POST Create new NFV-MANO Performance Monitoring Job with not permitted authoriza ... Test title: POST Create a new NFV-MANO Performance Monitoring Job with not permitted authorization scope ... Test objective: The objective is to test that the creation of a new NFV-MANO performance monitoring job fails with not permitted authorization scope ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance jobs are set in the NFV-MANO. - ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO Performance Job is successfully created on the NFV-MANO diff --git a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot index 24a69702..b351c76f 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/Thresholds.robot @@ -7,7 +7,7 @@ POST Create new Performance Threshold ... Test title: POST Create new Performance Threshold ... Test objective: The objective is to test the creation of a new NFV-MANO performance threshold and perform the JSON schema validation of the returned threshold data structure. ... Pre-conditions: A NFV-MANO instance is instantiated. - ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO Performance Threshold is successfully created on the NFV-MANO @@ -22,7 +22,7 @@ GET All Performance Thresholds ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance thresholds and perform a JSON schema validation of the collected thresholds data structure. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -35,7 +35,7 @@ GET Performance Thresholds with attribute-based filter ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available NFV-MANO performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set in the NFV-MANO. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ GET Performance Threshold with Paged Response ... Test title: GET Performance Threshold with Paged Response ... Test objective: The objective is to query information about NFV-MANO Performance Thresholds to get Paged Response. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ GET Performance Thresholds - Invalid attribute-based filter ... Test title: GET Performance Thresholds - Invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NFV-MANO performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ GET Performance Threshold - Bad Request Response too Big ... Test title: GET Performance Threshold - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NFV-MANO performance thresholds fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A NFV-MANO instance is instantiated. One or more NFV-MANO performance thresholds are set. - ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ PUT Performance Thresholds - Method not implemented ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify NFV-MANO Performance Thresholds ... Pre-conditions: none - ... Reference: clause 6.5.6.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.6.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ PATCH Performance Thresholds - Method not implemented ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify NFV-MANO Performance Thresholds ... Pre-conditions: none - ... Reference: clause 6.5.6.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.6.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ DELETE Performance Thresholds - Method not implemented ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update NFV-MANO Performance Thresholds ... Pre-conditions: none - ... Reference: clause 6.5.6.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.6.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -125,7 +125,7 @@ POST Create new Performance Threshold - Unprocessable content ... Test objective: The objective is to test the creation of a new NFV-MANO performance threshold and perform the JSON schema validation of the returned threshold data structure. ... Test objective: The objective is to test that a new NFV-MANO performance threshold is not created if the notification endpoint is unreachable by the NFV-MANO. ... Pre-conditions: A NFV-MANO instance is instantiated. - ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: Notification endpoint is unreachable by the NFV-MANO. ... Post-Conditions: none @@ -138,7 +138,7 @@ POST Create new Performance Threshold with permitted authorization scope ... Test title: POST Create new Performance Threshold with permitted authorization scope ... Test objective: The objective is to test the creation of a new NFV-MANO performance threshold with permitted authorization scope. ... Pre-conditions: A NFV-MANO instance is instantiated. - ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO Performance Threshold is successfully created on the NFV-MANO @@ -153,7 +153,7 @@ POST Create new Performance Threshold with not permitted authorization scope ... Test title: POST Create new Performance Threshold with not permitted authorization scope ... Test objective: The objective is to test the creation of a new NFV-MANO performance threshold fails with not permitted authorization scope. ... Pre-conditions: A NFV-MANO instance is instantiated. - ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 6.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO Performance Threshold is successfully created on the NFV-MANO -- GitLab From 2fe39331c614f93e3d75e6021f732cf67736d1a8 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 18:55:53 +0100 Subject: [PATCH 131/141] added missing test step for Location Header in Test ID: 8.3.2.1.1 --- SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot | 1 + 1 file changed, 1 insertion(+) diff --git a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot index f7da29b0..3a35a8e4 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot @@ -14,6 +14,7 @@ POST Create new NFV-MANO Performance Monitoring Job Send Post Request to create new NFV-MANO Performance Monitoring Job Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is PmJob + Check HTTP Response Header Contains Location Check Postcondition PmJob Exists GET all NFV-MANO Performance Monitoring Jobs -- GitLab From 46073d54d1cfca4f0f8c18a2dc9f6f1dfca103a6 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Fri, 17 Jan 2025 17:00:28 +0100 Subject: [PATCH 132/141] updated missing test step for Location Header in Test ID: 8.3.2.1.1 --- .../NFVMANOPMKeywords.robot | 13 ++++++++++++- .../NFVMANOPerformanceManagement-API/PMJobs.robot | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/SOL009/NFVMANOPerformanceManagement-API/NFVMANOPMKeywords.robot b/SOL009/NFVMANOPerformanceManagement-API/NFVMANOPMKeywords.robot index ac39e32d..9fb0b107 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/NFVMANOPMKeywords.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/NFVMANOPMKeywords.robot @@ -234,7 +234,18 @@ Check HTTP Response Header Contains [Arguments] ${CONTENT_TYPE} Should Contain ${response['headers']} ${CONTENT_TYPE} Log Header is present - + +Check Postcondition Resource Returned in Location Header Is Available + Log Going to check postcondition + GET ${response['headers']['Location']} + Integer response status 200 + Log Received a 200 OK as expected + ${contentType}= Output response headers Content-Type + Should Contain ${contentType} application/json + ${result}= Output response body + Validate Json schemas/PmJobschema.json ${result} + Log Validated PmJobschema schema + Check HTTP Response Body Json Schema Is [Arguments] ${input} Run Keyword If '${input}' == 'ProblemDetails' Should Contain ${response['headers']['Content-Type']} application/problem+json diff --git a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot index 3a35a8e4..d280713b 100644 --- a/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot +++ b/SOL009/NFVMANOPerformanceManagement-API/PMJobs.robot @@ -15,6 +15,7 @@ POST Create new NFV-MANO Performance Monitoring Job Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is PmJob Check HTTP Response Header Contains Location + Check Postcondition Resource Returned in Location Header Is Available Check Postcondition PmJob Exists GET all NFV-MANO Performance Monitoring Jobs -- GitLab From 0c583a2d0272053d975f9a98378db7592c74cfb5 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 17:06:13 +0100 Subject: [PATCH 133/141] updated reference version to 5.1.1 to NFV MANO CIM tests --- .../ChangeInterfaceStateTask.robot | 16 ++++---- .../ChangeNFVMANOEntityStateTask.robot | 16 ++++---- .../ChangeStateOperationOccurrences.robot | 34 ++++++++-------- .../IndividualNFVMANOServiceInterface.robot | 20 +++++----- .../IndividualPeerEntity.robot | 20 +++++----- ...vidualStateChangeOperationOccurrence.robot | 16 ++++---- .../IndividualSubscription.robot | 18 ++++----- .../NFVMANOEntity.robot | 20 +++++----- .../NFVMANOServiceInterfaces.robot | 34 ++++++++-------- .../NotificationEndpoint.robot | 4 +- .../Notifications.robot | 4 +- .../PeerEntities.robot | 40 +++++++++---------- .../Subscriptions.robot | 30 +++++++------- 13 files changed, 136 insertions(+), 136 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot index 256dc215..be0a1c32 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeInterfaceStateTask.robot @@ -13,7 +13,7 @@ POST Change interface state task ... Test title: POST Change interface state task ... Test objective: The objective is send put request to change the state of the NFV-MANO service interface produced by the NFV-MANO functional entity ... Pre-conditions: none - ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: interface status changed @@ -27,7 +27,7 @@ POST Change interface state task - Conflict ... Test title: POST Change interface state task - Conflict ... Test objective: The objective is to test that request to cchange the state of the NFV-MANO service interface produced by the NFV-MANO functional entity failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Change interface state task - Method not implemented ... Test title: GET Change interface state task - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.12.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Change interface state task - Conflict - Method not implemented ... Test title: PUT Change interface state task - Conflict - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.12.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Change interface state task - Conflict - Method not implemented ... Test title: PATCH Change interface state task - Conflict - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.12.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Change interface state task - Conflict - Method not implemented ... Test title: DELETE Change interface state task - Conflict - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.12.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.12.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ POST Change interface state task with permitted authorization scope ... Test title: POST Change interface state task with permitted authorization scope ... Test objective: The objective is send put request to change the state of the NFV-MANO service interface with permitted authorization scope ... Pre-conditions: none - ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: interface status changed @@ -102,7 +102,7 @@ POST Change interface state task with not permitted authorization scope ... Test title: POST Change interface state task with permitted authorization scope ... Test objective: The objective is to verify that put request to change the state of the NFV-MANO service interface fails with not permitted authorization scope ... Pre-conditions: none - ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.12.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: interface status changed diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot index 450faa09..3f14b301 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeNFVMANOEntityStateTask.robot @@ -12,7 +12,7 @@ POST NFV-MANO functional entity application state change ... Test title: POST NFV-MANO functional entity application state change ... Test objective: The objective is to request state change of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: entity status changed @@ -26,7 +26,7 @@ POST NFV-MANO functional entity application state change - Conflict ... Test title: POST NFV-MANO functional entity application state change - Conflict ... Test objective: The objective is to test that request to change the state of the NFV-MANO functional entity application fails due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET NFV-MANO functional entity application state change - Method not implemented ... Test title: GET NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT NFV-MANO functional entity application state change - Method not implemented ... Test title: PUT NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.7.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.7.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH NFV-MANO functional entity application state change - Method not implement ... Test title: PATCH NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE NFV-MANO functional entity application state change - Method not implemen ... Test title: DELETE NFV-MANO functional entity application state change - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete the changed state of the NFV-MANO functional entity application. ... Pre-conditions: none - ... Reference: clause 5.5.7.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.7.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ POST NFV-MANO functional entity application state change with permitted authoriz ... Test title: POST NFV-MANO functional entity application state change with permitted authorization scope ... Test objective: The objective is to test a state change of the NFV-MANO functional entity application with permitted authorization scope. ... Pre-conditions: none - ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: entity status changed @@ -101,7 +101,7 @@ POST NFV-MANO functional entity application state change with not permitted auth ... Test title: POST NFV-MANO functional entity application state change with not permitted authorization scope ... Test objective: The objective is to test that state change of the NFV-MANO functional entity application fails with not permitted authorization scope. ... Pre-conditions: none - ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: entity status changed diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot index 03058d00..4956c13b 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/ChangeStateOperationOccurrences.robot @@ -13,7 +13,7 @@ POST Change State Operation Occurrences - Method not implemented ... Test title: POST Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Change State Operation Occurrences ... Test title: GET Change State Operation Occurrences ... Test objective: The objective is to query status information about multiple change state operation occurrences, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET Change State Operation Occurrences - invalid attribute-based filter ... Test title: GET Change State Operation Occurrences - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET Change State Operation Occurrences - invalid attribute selector ... Test title: GET Change State Operation Occurrences - invalid attribute selector ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ GET Change State Operation Occurrences - Bad Request Response too Big ... Test title: GET Change State Operation Occurrences - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of Change State Operation Occurrences fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ GET Change State Operation Occurrences with attribute-based filter ... Test title: GET Change State Operation Occurrences with attribute-based filter ... Test objective: The objective is to query status information about multiple change state operation occurrences with attribute filters, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ GET Change State Operation Occurrences with "all_fields" attribute selector ... Test title: GET Change State Operation Occurrences with "all_fields" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrences with "all_fields" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ GET Change State Operation Occurrences with "exclude_default" attribute selector ... Test title: GET Change State Operation Occurrence with "exclude_default" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrence with "exclude_default" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ GET Change State Operation Occurrences with "fields" attribute selector ... Test title: GET Change State Operation Occurrences with "fields" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrences with fields attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ GET Change State Operation Occurrences with "exclude_fields" attribute selector ... Test title: GET Change State Operation Occurrences with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrences with "exclude_fields" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ GET Change State Operation Occurrences with Paged Response ... Test title: GET Change State Operation Occurrence with Paged Response ... Test objective: The objective is to query Change State Operation Occurrence to get Paged Response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -155,7 +155,7 @@ GET Change State Operation Occurrences with "fields" and "exclude_default" attri ... Test title: GET Change State Operation Occurrences with "fields" and "exclude_default" attribute selector ... Test objective: The objective is to retrieve Change State Operation Occurrences with fields and exclude default attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -168,7 +168,7 @@ PUT Change State Operation Occurrences - Method not implemented ... Test title: PUT Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -180,7 +180,7 @@ PATCH Change State Operation Occurrences - Method not implemented ... Test title: PATCH Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -192,7 +192,7 @@ DELETE Change State Operation Occurrences - Method not implemented ... Test title: DELETE Change State Operation Occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -204,7 +204,7 @@ GET Change State Operation Occurrences with permitted authorization scope ... Test title: GET Change State Operation Occurrences with permitted authorization scope ... Test objective: The objective is to query status information about multiple change state operation occurrences with permitted authorization scope. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -217,7 +217,7 @@ GET Change State Operation Occurrences with not permitted authorization scope ... Test title: GET Change State Operation Occurrences with not permitted authorization scope ... Test objective: The objective is to query status information about multiple change state operation occurrences and verify the failure when using a not permitted authorization scope. ... Pre-conditions: none - ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot index c4aee2ba..7f78d8a8 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualNFVMANOServiceInterface.robot @@ -13,7 +13,7 @@ POST Individual NFV-MANO Service Interface - Method not implemented ... Test title: POST Individual NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.11.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.11.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Individual NFV-MANO Service Interface ... Test title: GET Individual NFV-MANO Service Interface ... Test objective: The objective is to query status information about an NFV-MANO service interface of the producer NFV-MANO functional entity by reading an "Individual NFV-MANO service interface" resource, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET Individual NFV-MANO Service Interface - Not Found ... Test title: GET Individual NFV-MANO Service Interface - Not Found ... Test objective: The objective is to test the retrieval of information about an NFV-MANO service interface of the producer NFV-MANO functional entity by reading an "Individual NFV-MANO service interface" resource fails when the resource is not present. ... Pre-conditions: none - ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.11.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Individual NFV-MANO Service Interface - Method not implemented ... Test title: PUT Individual NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.11.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.11.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Individual NFV-MANO Service Interface ... Test title: PATCH Individual NFV-MANO Service Interface ... Test objective: This method modifies the Individual NFV-MANO Service Interface resource, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. - ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Individual NFV-MANO Service Interface is modified by the operation @@ -76,7 +76,7 @@ PATCH Individual NFV-MANO Service Interface - Conflict ... Test title: PATCH Individual NFV-MANO Service Interface - Conflict ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Service Interface resource failed due to a conflict with the state of the Individual NFV-MANO Service Interface resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. - ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Individual NFV-MANO Service Interface is not modified by the operation @@ -89,7 +89,7 @@ PATCH Individual NFV-MANO Service Interface - PreCondition Failed ... Test title: PATCH Individual NFV-MANO Service Interface - PreCondition Failed ... Test objective: The objective is to test that the modification of the Individual NFV-MANO Service Interface resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. - ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Individual NFV-MANO Service Interface is not modified by the operation @@ -102,7 +102,7 @@ DELETE Individual NFV-MANO Service Interface - Method not implemented ... Test title: DELETE Individual NFV-MANO Service Interface - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.11.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.11.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -114,7 +114,7 @@ PATCH Individual NFV-MANO Service Interface with permitted authorization scope ... Test title: PATCH Individual NFV-MANO Service Interface with permitted authorization scope ... Test objective: This method modifies the Individual NFV-MANO Service Interface resource with permitted authorization scope. ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. - ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Individual NFV-MANO Service Interface is modified by the operation @@ -127,7 +127,7 @@ PATCH Individual NFV-MANO Service Interface with not permitted authorization sco ... Test title: PATCH Individual NFV-MANO Service Interface with not permitted authorization scope ... Test objective: The objective is to test that modification of Individual NFV-MANO Service Interface resource fails with not permitted authorization scope. ... Pre-conditions: Individual NFV-MANO Service Interface resource is already created. - ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.11.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Individual NFV-MANO Service Interface is modified by the operation diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot index fa7ed065..d8e37f7d 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualPeerEntity.robot @@ -13,7 +13,7 @@ POST Individual Peer Entity - Method not implemented ... Test title: POST Individual Peer Entity - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.14.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.14.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Individual Peer Entity ... Test title: GET Individual Peer Entity ... Test objective: The objective is to retrieves information and configuration hold in the producer NFV-MANO functional entity with regards to a peer entity by reading an individual peer entity resource ... Pre-conditions: none - ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET Individual Peer Entity - Not Found ... Test title: GET Individual Peer Entity - Not Found ... Test objective: The objective is to test the retrieval of information and configuration hold in the producer NFV-MANO functional entity with regards to a peer entity by reading an individual peer entity resource fails when the resource is not present. ... Pre-conditions: none - ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.14.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual Peer Entity - Method not implemented ... Test title: PUT Individual Peer Entity - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.14.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.14.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual Peer Entity ... Test title: PATCH Individual Peer Entity ... Test objective: This method modifies configuration and information of the producer NFV-MANO functional entity with regards to a peer functional entity by updating the corresponding "Individual peer entity" resource. ... Pre-conditions: At least one Peer Entity resource is created - ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Peer Entity Resource is modified by the operation @@ -75,7 +75,7 @@ PATCH Individual Peer Entity - Conflict ... Test title: PATCH Individual Peer Entity - Conflict ... Test objective: The objective is to test that the modification of configuration and information of the producer NFV-MANO functional entity with regards to a peer functional entity by updating the corresponding "Individual peer entity" resource failed due to a conflict with the state of the Individual Peer Entity resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity resource is created - ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Peer Entity Resource is not modified by the operation @@ -88,7 +88,7 @@ PATCH Individual Peer Entity - PreCondition Failed ... Test title: PATCH Individual Peer Entity - PreCondition Failed ... Test objective: The objective is to test that the modification of the Individual Peer Entity resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity resource is created - ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Peer Entity Resource is not modified by the operation @@ -101,7 +101,7 @@ DELETE Individual Peer Entity - Method not implemented ... Test title: DELETE Individual Peer Entity - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.14.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.14.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ PATCH Individual Peer Entity with permitted authorization scope ... Test title: PATCH Individual Peer Entity with permitted authorization scope ... Test objective: This method modifies configuration and information of the producer NFV-MANO functional entity with permitted authorization scope. ... Pre-conditions: At least one Peer Entity resource is created - ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Peer Entity Resource is modified by the operation @@ -126,7 +126,7 @@ PATCH Individual Peer Entity with not permitted authorization scope ... Test title: PATCH Individual Peer Entity with not permitted authorization scope ... Test objective: This method tests that modification of configuration and information of the producer NFV-MANO functional entity fails with not permitted authorization scope. ... Pre-conditions: At least one Peer Entity resource is created - ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.14.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Peer Entity Resource is modified by the operation diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot index 0227dd08..b7d44b0f 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualStateChangeOperationOccurrence.robot @@ -13,7 +13,7 @@ POST Individual Change State Operation Occurrence - Method not implemented ... Test title: POST Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.9.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.9.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Individual Change State Operation Occurrence ... Test title: GET Individual Change State Operation Occurrence ... Test objective: The objective is to query status information about Individual change state operation occurrence. ... Pre-conditions: none - ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET Individual Change State Operation Occurrence - Not Found ... Test title: GET Individual Change State Operation Occurrence - Not Found ... Test objective: The objective is to test the retrieval of information about individual change state operation occurence fails when the resource is not present. ... Pre-conditions: none - ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual Change State Operation Occurrence - Method not implemented ... Test title: PUT Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.9.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.9.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual Change State Operation Occurrence - Method not implemented ... Test title: PATCH Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.9.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.9.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual Change State Operation Occurrence - Method not implemented ... Test title: DELETE Individual Change State Operation Occurrence - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.9.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.9.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET Individual Change State Operation Occurrence with permitted authorization sc ... Test title: GET Individual Change State Operation Occurrence with permitted authorization scope ... Test objective: The objective is to query status information about Individual change state operation occurrence with permitted authorization scope. ... Pre-conditions: none - ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ GET Individual Change State Operation Occurrence with not permitted authorizatio ... Test title: GET Individual Change State Operation Occurrence with not permitted authorization scope ... Test objective: The objective is test that the query status information about Individual change state operation occurrence fails with not permitted authorization scope. ... Pre-conditions: none - ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.9.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot index 90652946..8c162b68 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/IndividualSubscription.robot @@ -12,7 +12,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the retrieval of individual subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Individual Subscription - invalid resource identifier ... Test title: GET Individual Subscription - invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual subscription fails when using an invalid resource identifier ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ DELETE Individual Subscription ... Test title: DELETE Individual Subscription ... Test objective: The objective is to test the deletion of an individual subscription ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The resource is not available anymore in the NFV-MANO @@ -51,7 +51,7 @@ DELETE Individual Subscription - invalid resource identifier ... Test title: DELETE Individual Subscription - invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual subscription fails when using an invalid resource identifier ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Subscription ... Pre-conditions: none - ... Reference: clause 5.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PUT Individual Subscription - Method not implemented ... Test title: PUT Individual Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing subscription ... Pre-conditions: none - ... Reference: clause 5.5.5.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.5.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ PATCH Individual Subscription - Method not implemented ... Test title: PATCH Individual Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing subscription ... Pre-conditions: none - ... Reference: clause 5.5.5.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.5.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ GET Individual Subscription with permitted authorization scope ... Test title: GET Individual Subscription with permitted authorization scope ... Test objective: The objective is to test the retrieval of individual subscription when a permitted authorization scope is used. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ GET Individual Subscription with not permitted authorization scope ... Test title: GET Individual Subscription with not permitted authorization scope ... Test objective: The objective is to test the retrieval of individual subscription fails when a not permitted authorization scope is used. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot index 1d32a280..1da8dcdf 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOEntity.robot @@ -13,7 +13,7 @@ POST NFV-MANO entity - Method not implemented ... Test title: POST NFV-MANO entity - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create an NFV-MANO Entity. ... Pre-conditions: none - ... Reference: clause 5.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET NFV-MANO entity ... Test title: Get NFV-MANO entity ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource and perform a JSON schema and content validation of the collected job data structure. ... Pre-conditions: none - ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET NFV-MANO entity - Not Found ... Test title: Get NFV-MANO entity - Not Found ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource fails when the resource is not present. ... Pre-conditions: none - ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT NFV-MANO entity - Method not implemented ... Test title: PUT NFV-MANO entity - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an NFV-MANO Entity. ... Pre-conditions: none - ... Reference: clause 5.5.3.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.3.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH NFV-MANO entity ... Test title: PATCH NFV-MANO entity ... Test objective: The objective is to test that PATCH method modifies the NFV-MANO entity resource and perform a JSON schema and content validation of the modified response. ... Pre-conditions: NFV-MANO entity resource is already created. - ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO entity is modified by the operation @@ -75,7 +75,7 @@ PATCH NFV-MANO entity - Conflict ... Test title: PATCH NFV-MANO entity - Conflict ... Test objective: The objective is to test that the modification of the NFV-MANO entity resource failed due to a conflict with the state of the NFV-MANO entity resource and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: NFV-MANO entity resource is already created. - ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO entity is not modified by the operation @@ -88,7 +88,7 @@ PATCH NFV-MANO entity - PreCondition Failed ... Test title: PATCH NFV-MANO entity - PreCondition Failed ... Test objective: The objective is to test that the modification of the NFV-MANO entity resource failed because precondition given in an HTTP request header is not fulfilled and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: NFV-MANO entity resource is already created. - ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The NFV-MANO entity is not modified by the operation @@ -101,7 +101,7 @@ DELETE NFV-MANO entity - Method not implemented ... Test title: DELETE NFV-MANO entity - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an NFV-MANO Entity. ... Pre-conditions: none - ... Reference: clause 5.5.3.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.3.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ GET NFV-MANO entity with permitted authorization scope ... Test title: Get NFV-MANO entity with permitted authorization scope ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity by reading the NFV-MANO entity resource when a permitted authorization scope is used. ... Pre-conditions: none - ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ GET NFV-MANO entity with not permitted authorization scope ... Test title: Get NFV-MANO entity with not permitted authorization scope ... Test objective: The objective is to test the retrieval of information about an NFV-MANO functional entity fails when a not permitted authorization scope is used. ... Pre-conditions: none - ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot index f9fd44d8..76c607a5 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOServiceInterfaces.robot @@ -13,7 +13,7 @@ POST NFV-MANO Service Interfaces - Method not implemented ... Test title: POST NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that POST method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET NFV-MANO Service Interfaces ... Test title: GET NFV-MANO Service Interfaces ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ GET NFV-MANO Service Interfaces - invalid attribute-based filter ... Test title: GET NFV-MANO Service Interfaces - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET NFV-MANO Service Interfaces - invalid attribute selector ... Test title: GET NFV-MANO Service Interfaces - invalid attribute selector ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ GET NFV-MANO Service Interfaces - Bad Request Response too Big ... Test title: GET NFV-MANO Service Interfaces - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of NFV-MANO Service Interfaces fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ GET NFV-MANO Service Interfaces with attribute-based filter ... Test title: GET NFV-MANO Service Interfaces with attribute-based filter ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entities with attribute filters, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ GET NFV-MANO Service Interfaces with "all_fields" attribute selector ... Test title: GET NFV-MANO Service Interface with "all_fields" attribute selector ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "all_fields" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -103,7 +103,7 @@ GET NFV-MANO Service Interfaces with "exclude_default" attribute selector ... Test title: GET NFV-MANO Service Interfaces with "exclude_default" attribute selector ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_default" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -116,7 +116,7 @@ GET NFV-MANO Service Interfaces with "fields" attribute selector ... Test title: GET NFV-MANO Service Interfaces with "fields" attribute selector ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with fields attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ GET NFV-MANO Service Interfaces with "exclude_fields" attribute selector ... Test title: GET NFV-MANO Service Interfaces with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_fields" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ GET NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute se ... Test title: GET NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to retrieve NFV-MANO Service Interfaces with "exclude_default" and "fields" attribute selector, and perform the JSON schema validation of the HTTP response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -155,7 +155,7 @@ GET NFV-MANO Service Interfaces with Paged Response ... Test title: GET NFV-MANO Service Interfaces with Paged Response ... Test objective: The objective is to query NFV-MANO Service Interface to get Paged Response. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -168,7 +168,7 @@ PUT NFV-MANO Service Interfaces - Method not implemented ... Test title: PUT NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -180,7 +180,7 @@ PATCH NFV-MANO Service Interfaces - Method not implemented ... Test title: PATCH NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -192,7 +192,7 @@ DELETE NFV-MANO Service Interfaces - Method not implemented ... Test title: DELETE NFV-MANO Service Interfaces - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -204,7 +204,7 @@ GET NFV-MANO Service Interfaces with permitted authorization scope ... Test title: GET NFV-MANO Service Interfaces with permitted authorization scope ... Test objective: The objective is to query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity with permitted authorization scope. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -217,7 +217,7 @@ GET NFV-MANO Service Interfaces with not permitted authorization scope ... Test title: GET NFV-MANO Service Interfaces with not permitted authorization scope ... Test objective: The objective is test that the query status information about multiple NFV-MANO service interfaces of the NFV-MANO functional entity fails when using not permitted authorization scope. ... Pre-conditions: none - ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.10.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot index 4bab4eeb..e6def01b 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ Information Changed Notification ... Test title: Information Changed Notification ... Test objective: The objective is to test that Information Changed Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for information availability notification is available in the NFV-MANO. - ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ Change State Notification ... Test title: Change State Notification ... Test objective: The objective is to test that Change State Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for change state notification is available in the NFV-MANO. - ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Notifications.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Notifications.robot index 758082b6..f239cf39 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/Notifications.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Notifications.robot @@ -16,7 +16,7 @@ Information Changed Notification ... Test title: Information Changed Notification ... Test objective: The objective is to test the dispatch of Information Changed Notification when configuration or information is changed in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for information availability notifications is available in the NFV-MANO. - ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Change State Notification ... Test title: Change State Notification ... Test objective: The objective is to test the dispatch of Change State Notification when state changes of the NFV-MANO functional entity and its managed objects, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A performance job is created, and a state change subscription is available in the NFV-MANO. - ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANOz ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot index dac2d78f..e4df90c5 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/PeerEntities.robot @@ -13,7 +13,7 @@ POST Peer Entity ... Test title: POST Peer Entity ... Test objective: The objective is to creates in the producer NFV-MANO functional entity a new peer entity resource which contains configuration and information with regards to the peer functional entity and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Peer Entity is created @@ -28,7 +28,7 @@ GET Peer Entities ... Test title: GET Peer Entities ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET Peer Entities - invalid attribute-based filter ... Test title: GET Peer Entities - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Peer Entities - invalid attribute selector ... Test title: GET Peer Entities - invalid attribute selector ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET Peer Entities - Bad Request Response too Big ... Test title: GET Peer Entities - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ GET Peer Entities with attribute-based filter ... Test title: GET Peer Entities with attribute-based filter ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with attribute filters, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ GET Peer Entities with "all_fields" attribute selector ... Test title: GET Peer Entities with "all_fields" attribute selector ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "all_fields" attribute selector, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ GET Peer Entities with "exclude_default" attribute selector ... Test title: GET Peer Entities with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_default" attribute selector, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -119,7 +119,7 @@ GET Peer Entities with "fields" attribute selector ... Test title: GET Peer Entities with "fields" attribute selector ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with fields attribute selector, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -132,7 +132,7 @@ GET Peer Entities with "exclude_fields" attribute selector ... Test title: GET Peer Entities with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_fields" attribute selector, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -145,7 +145,7 @@ GET Peer Entities with "exclude_default" and "fields" attribute selector ... Test title: GET Peer Entities with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to retrieve information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities with "exclude_default" and "fields" attribute selector, and perform the JSON schema validation of the returned job data structure. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -158,7 +158,7 @@ GET Peer Entity with Paged Response ... Test title: GET Peer Entity with Paged Response ... Test objective: The objective is to query information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities to get Paged Response. ... Pre-conditions: At least one Peer Entity is already created. - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -171,7 +171,7 @@ Get Peer Entity with malformed authorization token ... Test title: Get Peer Entity with malformed authorization token ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using malformed authorization token. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -183,7 +183,7 @@ Get Peer Entity without authorization token ... Test title: Get Peer Entity without authorization token ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when omitting the authorization token. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -195,7 +195,7 @@ GET information about multiple alarms with expired or revoked authorization toke ... Test title: GET information about multiple alarms with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information and configuration in the producer NFV-MANO functional entity with regards to multiple peer entities fails when using expired or revoked authorization token. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -207,7 +207,7 @@ PUT Peer Entities - Method not implemented ... Test title: PUT Peer Entities - Method not implemented ... Test objective: The objective is to test that PUT method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -219,7 +219,7 @@ PATCH Peer Entities - Method not implemented ... Test title: PATCH Peer Entities - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -231,7 +231,7 @@ DELETE Peer Entities - Method not implemented ... Test title: DELETE Peer Entities - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemeted. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -243,7 +243,7 @@ POST Peer Entity with permitted authorization scope ... Test title: POST Peer Entity with permitted authorization scope ... Test objective: The objective is to create in the producer NFV-MANO functional entity a new peer entity resource with permitted authorization scope. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Peer Entity is created @@ -258,7 +258,7 @@ POST Peer Entity with not permitted authorization scope ... Test title: POST Peer Entity with not permitted authorization scope ... Test objective: The objective is to test that creation in the producer NFV-MANO functional entity of a new peer entity resource fails with not permitted authorization scope. ... Pre-conditions: none - ... Reference: clause 5.5.13.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.13.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: Peer Entity is created diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot index 11e52620..26d7540a 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot @@ -16,7 +16,7 @@ GET all Subscriptions ... Test title: GET all Subscriptions ... Test objective: The objective is to test the retrieval list of active subscriptions of API consumer and perform a JSON schema validation of the returned subscriptions data structure. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ GET Subscriptions with attribute-based filter ... Test title: GET Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of active subscriptions list of API consumer using attribute-based filter and perform a JSON schema validation of the collected indicators data structure. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ GET Subscriptions with Paged Response ... Test title: GET Subscriptions with Paged Response ... Test objective: The objective is to query information of active subscriptions list to of API consumer to get Paged Response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: ... Post-Conditions: @@ -55,7 +55,7 @@ GET Subscriptions - invalid attribute-based filter ... Test title: GET Subscriptions - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ GET Subscriptions - Bad Request Response too Big ... Test title: GET Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ GET Subscriptions - invalid resource endpoint ... Test title: GET Subscriptions - invalid resource endpoint ... Test objective: The objective is to test that the retrieval of active subscriptions list of API consumer fails when using invalid resource endpoint. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ POST Create new Subscription ... Test title: Create new Subscription ... Test objective: The objective is to test the creation of a new subscription and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The subscription is successfully set and it matches the issued subscription @@ -111,7 +111,7 @@ POST Create request for duplicated Subscription not creating duplicated subscrip ... Test title: Create request for duplicated Subscription not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated subscription failed and check that no new subscription is created and a link to the original subscription is returned ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing Subscription returned is available in the NFV-MANO @@ -127,7 +127,7 @@ POST Create request for duplicated Subscription creating duplicated subscription ... Test title: Create request for duplicated Subscription creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated subscription is successfully set and it matches the issued subscription @@ -142,7 +142,7 @@ PUT Subscriptions - Method not implemented ... Test title: PUT Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions ... Pre-conditions: none - ... Reference: clause 5.5.4.3.3 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.3 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -154,7 +154,7 @@ PATCH Subscriptions - Method not implemented ... Test title: PATCH Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions ... Pre-conditions: none - ... Reference: clause 5.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -166,7 +166,7 @@ DELETE Subscriptions - Method not implemented ... Test title: DELETE Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions ... Pre-conditions: none - ... Reference: clause 5.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -178,7 +178,7 @@ POST Create a new subscription - Unprocessable Content ... Test title: POST Create a new Subscription - Unprocessable Content ... Test objective: The objective is to test that a new subscription is not created if the notification endpoint is unreachable by the NFV-MANO. ... Pre-conditions: none - ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: Notification endpoint is unreachable by the NFV-MANO ... Post-Conditions: none @@ -191,7 +191,7 @@ GET all Subscriptions with permitted authorization scope ... Test title: GET all Subscriptions with permitted authorization scope ... Test objective: The objective is to test the retrieval list of active subscriptions of API consumer when a permitted authorization scope is used. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -204,7 +204,7 @@ GET all Subscriptions with not permitted authorization scope ... Test title: GET all Subscriptions with not permitted authorization scope ... Test objective: The objective is to test the retrieval list of active subscriptions of API consumer ffails when a not permitted authorization scope is used. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v4.5.1 + ... Reference: clause 5.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none -- GitLab From 06ed3120ffd1a61e5f7f3417a86fa577a5775157 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 17:23:10 +0100 Subject: [PATCH 134/141] updated ManoEntity json schema to reflect changes in NFVSOL(24)000124 --- .../schemas/ManoEntity.schema.json | 76 ++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoEntity.schema.json b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoEntity.schema.json index 65b38926..e46747bb 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoEntity.schema.json +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/schemas/ManoEntity.schema.json @@ -185,7 +185,7 @@ } }, "nfvoSpecificInfo": { - "description": "This type represents information attributes specific to an NFVO entity, and that can be relevant to more than one NFV-MANO service offered by an NFVO entity. * NOTE 1:\tThe information to be provided in this attribute shall relate to the specification and version\n of the specification. For instance, \"ETSI GS NFV-SOL 001 (V2.5.1)\".\n NOTE 2:\tIf this attribute is not present, the value of this parameter is undefined.\n", + "description": "This type represents information attributes specific to an NFVO entity, and that can be relevant to more than one NFV-MANO service offered by an NFVO entity. * NOTE 1:\tThe information to be provided in this attribute shall relate to the specification and version\n of the specification. For instance, \"ETSI GS NFV-SOL 001 (V2.5.1)\".\n NOTE 2:\tIf this attribute is not present, the value of this parameter is undefined.\n", "type": "object", "required": [ "supportedVnfdFormats", @@ -260,7 +260,7 @@ } }, "vnfmSpecificInfo": { - "description": "This type represents information attributes specific to a VNFM entity, and that can be relevant to more than one NFV-MANO service offered by a VNFM entity. * NOTE:\tThe information to be provided in this attribute shall relate to the specification and version\n of the specification. For instance, \"ETSI GS NFV-SOL 001 (V2.5.1)\".\n", + "description": "This type represents information attributes specific to a VNFM entity, and that can be relevant to more than one NFV-MANO service offered by a VNFM entity. * NOTE:\tThe information to be provided in this attribute shall relate to the specification and version\n of the specification. For instance, \"ETSI GS NFV-SOL 001 (V5.5.1)\".\n", "type": "object", "required": [ "resoruceMgmtModeSupport", @@ -323,6 +323,78 @@ "DIRECT-MODE" ] } + }, + "pmJobConnectionInfos": { + "description": "PM job connection information\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "monitoringType" + ], + "properties": { + "monitoringType": { + "description": "Indicates the type of tool to monitor the PM of the VNF instance managed by the VNFM. Permitted values: • VIM_CISM • EXTERNAL\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL" + ] + }, + "vimId": { + "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" + } + } + } + }, + "fmConnectionInfos": { + "description": "FM connection information\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "monitoringType" + ], + "properties": { + "monitoringType": { + "description": "Indicates the type of tool to monitor faults of the VNF instance managed by the VNFM. Permitted values: • VIM_CISM • EXTERNAL\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL" + ] + }, + "vimId": { + "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" + } + } + } } } }, -- GitLab From 38738641a7a95611a31e50976660368e38cbacbc Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 17:40:00 +0100 Subject: [PATCH 135/141] implemented missing test for 422 response code in NFV MANO CIM Subscriptions --- .../NFVMANOCimKeywords.robot | 23 ++++++++++++++++++- .../Subscriptions.robot | 15 +++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index a14ce3a3..d98df2b7 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -960,7 +960,28 @@ Send Post Request for Duplicated Subscription POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} allow_redirects=false ${output}= Output response Set Suite Variable ${response} ${output} - + +Send POST request for subscription with unprocessable content + Log Creating a new subscription for unreachable notification endpoint + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/CimSubscriptionRequest.json + ${body_request}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + Check GET response from Unreachable Notification Endpoint + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body_request} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Check GET response from Unreachable Notification Endpoint + Log Creating mock request and response to handle GET operation on unreachable notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${unreachable_callback_uri} + &{notification_response}= Create Mock Response status_code=404 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} + Clear Requests ${unreachable_callback_uri} + Check HTTP Response Body Is Empty Should Be Empty ${response['body']} Log No json schema is provided. Validation OK diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot index 26d7540a..f594a270 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot @@ -135,7 +135,20 @@ POST Create request for duplicated Subscription creating duplicated subscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is PmSubscription Check HTTP Response Body CimSubscription Attributes Values Match the Issued Subscription - Check Postcondition Subscription Is Set + Check Postcondition Subscription Is Set + +POST new subscription - Unprocessable Content + [Documentation] Test ID: 8.3.1.10.9a + ... Test title: POST new subscription - Unprocessable Content + ... Test objective: The objective is to test the creation of a new subscription fails when a request contains syntactically correct data but the data cannot be processed. + ... Pre-conditions: none + ... Reference: clause 5.5.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: none + ... Post-Conditions: none + Send POST request for subscription with unprocessable content + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails PUT Subscriptions - Method not implemented [Documentation] Test ID: 8.3.1.10.10 -- GitLab From 4b687586f590d030423563e3a7c69bb60a4d2ec8 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Thu, 2 Jan 2025 18:52:05 +0100 Subject: [PATCH 136/141] added missing test step for Location Header in Test ID: 8.3.1.10.7 --- .../Subscriptions.robot | 1 + 1 file changed, 1 insertion(+) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot index f594a270..729aa01c 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot @@ -101,6 +101,7 @@ POST Create new Subscription Send Post Request for Subscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is CimSubscription + Check HTTP Response Header Contains Location Check HTTP Response Body CimSubscription Attributes Values Match the Issued Subscription Check Postcondition Subscription Is Set -- GitLab From 4537fdf49491973db89cdd6fe3de9910cd8cf486 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Fri, 17 Jan 2025 17:06:09 +0100 Subject: [PATCH 137/141] updated missing test step for Location Header in Test ID: 8.3.1.10.7 --- .../NFVMANOCimKeywords.robot | 4 ---- .../Subscriptions.robot | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot index d98df2b7..a386b1c3 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/NFVMANOCimKeywords.robot @@ -996,10 +996,6 @@ Check Postcondition Subscription Resource Returned in Location Header Is Availab ${result}= Output response body Validate Json CimSubscription.schema.json ${result} Log Validated CimSubscription schema - ${body}= Get File jsons/subscriptions.json - ${subscription}= evaluate json.loads('''${body}''') json - Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']} - Log Validated Issued subscription is same as original Send Put Request for Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the NFV-MANO shall return a "405 Method diff --git a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot index 729aa01c..4d7cc67e 100644 --- a/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot +++ b/SOL009/NFVManoConfigurationAndInformationManagement-API/Subscriptions.robot @@ -102,6 +102,7 @@ POST Create new Subscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is CimSubscription Check HTTP Response Header Contains Location + Check Postcondition Subscription Resource Returned in Location Header Is Available Check HTTP Response Body CimSubscription Attributes Values Match the Issued Subscription Check Postcondition Subscription Is Set -- GitLab From 4e36798b1863992b43cd7920b2643e0316a78ca0 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Fri, 24 Jan 2025 17:49:39 +0100 Subject: [PATCH 138/141] updated reference version to 5.1.1 to VNF Snapshot tests --- ...essConfigurationForExternalArtifacts.robot | 16 ++++----- .../BuildVNFSnapshotPackageContentTask.robot | 16 ++++----- ...ancelVNFSnapshotPackageOperationTask.robot | 16 ++++----- ...ExtractVNFSnapshotPackageContentTask.robot | 18 +++++----- .../IndividualVNFSnapshotPackage.robot | 20 +++++------ ...IndividualVNFSnapshotPackageArtifact.robot | 24 ++++++------- .../UploadVNFSnapshotPackageFromUriTask.robot | 16 ++++----- .../VNFSnapshotPackageContent.robot | 24 ++++++------- .../VNFSnapshotPackages.robot | 34 +++++++++---------- 9 files changed, 92 insertions(+), 92 deletions(-) diff --git a/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot b/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot index ea1b2824..64782ef1 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/AccessConfigurationForExternalArtifacts.robot @@ -7,7 +7,7 @@ POST Access Configuration for External Artifacts - Method not implemented ... Test title: POST Access Configuration for External Artifacts - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.9.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Access Configuration for External Artifacts ... Test title: GET Access Configuration for External Artifacts ... Test objective: The objective is to test that GET method reads the access configuration information that is used by the NFVO to get the content of external VNF snapshot package artifacts. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ PUT Access Configuration for External Artifacts ... Test title: PUT Access Configuration for External Artifacts ... Test objective: The objective is to test that PUT method provides the access configuration information for the NFVO to download the content of external VNF package artifacts. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ PUT Access Configuration for External Artifacts - Conflict ... Test title: PUT Access Configuration for External Artifacts - Conflict ... Test objective: The objective is to test that PUT method cannot provide the access configuration information to the NFVO when the VNF Snapshot Package resource is not in CREATED or ERROR state. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.9.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The "state" attribute of the "Individual VNF snapshot package" resources contains a value different from "CREATED" or "ERROR". ... Post-Conditions: none @@ -58,7 +58,7 @@ PATCH Access Configuration for External Artifacts - Method Not implemented ... Test title: PATCH Access Configuration for External Artifacts - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ DELETE Access Configuration for External Artifacts - Method Not implemented ... Test title: DELETE Access Configuration for External Artifacts - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -82,7 +82,7 @@ GET Access Configuration for External Artifacts with permitted authorization sco ... Test title: GET Access Configuration for External Artifacts with permitted authorization scope ... Test objective: The objective is to test that GET method reads the access configuration information that is used by the NFVO to get the content of external VNF snapshot package artifacts with permitted authorization scope. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -95,7 +95,7 @@ GET Access Configuration for External Artifacts with not permitted authorization ... Test title: GET Access Configuration for External Artifacts with not permitted authorization scope ... Test objective: The objective is to test that GET method fails to read the access configuration information that is used by the NFVO to get the content of external VNF snapshot package artifacts when using not permitted authorization scope. ... Pre-conditions: Individual VNF Snapshot Package resource have been created. - ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.9.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot b/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot index fa6f50a0..4ea824dc 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/BuildVNFSnapshotPackageContentTask.robot @@ -7,7 +7,7 @@ POST Build VNF Snapshot Package Content Task ... Test title: POST Build VNF Snapshot Package Content Task ... Test objective: The objective is to test that POST method provides the information for the NFVO to start building the content of a VNF snapshot package. ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ POST Build VNF Snapshot Package Content Task - Conflict ... Test title: POST Build VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate building of VNF Snapshot Package and the state of the VNF snapshot package resource is other than "CREATED". ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "CREATED". ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Build VNF Snapshot Package Content Task - Method Not implemented ... Test title: GET Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ PUT Build VNF Snapshot Package Content Task - Method Not implemented ... Test title: PUT Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ PATCH Build VNF Snapshot Package Content Task - Method Not implemented ... Test title: PATCH Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ DELETE Build VNF Snapshot Package Content Task - Method Not implemented ... Test title: DELETE Build VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ POST Build VNF Snapshot Package Content Task with permitted authorization scope ... Test title: POST Build VNF Snapshot Package Content Task with permitted authorization scope ... Test objective: The objective is to test that POST method provides the information for the NFVO to start building the content of a VNF snapshot package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ POST Build VNF Snapshot Package Content Task with not permitted authorization sc ... Test title: POST Build VNF Snapshot Package Content Task with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to provide the information for the NFVO to start building the content of a VNF snapshot package when using a not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.6.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot b/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot index a2d5855e..108d5c47 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/CancelVNFSnapshotPackageOperationTask.robot @@ -7,7 +7,7 @@ POST Cancel VNF Snapshot Package Content Task ... Test title: POST Cancel VNF Snapshot Package Content Task ... Test objective: The objective is to test that POST method provides the information for the NFVO to cancel the ongoing operation related to the content of a VNF snapshot package. ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ POST Cancel VNF Snapshot Package Content Task - Conflict ... Test title: POST Cancel VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to cancel a VNF Snapshot Package task and the state of the VNF snapshot package resource is other than "UPLOADING", "BUILDING", "PROCESSING" or "EXTRACTING". ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "UPLOADING", "BUILDING", "PROCESSING" or "EXTRACTING". ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test title: GET Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ PUT Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test title: PUT Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ PATCH Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test title: PATCH Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ DELETE Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test title: DELETE Cancel VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ POST Cancel VNF Snapshot Package Content Task with permitted authorization scope ... Test title: POST Cancel VNF Snapshot Package Content Task with permitted authorization scope ... Test objective: The objective is to test that POST method provides the information for the NFVO to cancel the ongoing operation related to the content of a VNF snapshot package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ POST Cancel VNF Snapshot Package Content Task with not permitted authorization s ... Test title: POST Cancel VNF Snapshot Package Content Task with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to provide the information for the NFVO to cancel the ongoing operation related to the content of a VNF snapshot package when using not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.8.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot b/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot index 70af5855..5bc57dc9 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/ExtractVNFSnapshotPackageContentTask.robot @@ -7,7 +7,7 @@ POST Extract VNF Snapshot Package Content Task ... Test title: POST Extract VNF Snapshot Package Content Task ... Test objective: The objective is to test that POST method provides the information for the NFVO to start extracting the content of a VNF snapshot package. ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ POST Extract VNF Snapshot Package Content Task - Conflict State ... Test title: POST Extract VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate extraction of VNF Snapshot Package and the state of the VNF snapshot package resource is other than "AVAILABLE". ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "AVAILABLE". ... Post-Conditions: none @@ -32,7 +32,7 @@ POST Extract VNF Snapshot Package Content Task - Invalid VnfInstanceId ... Test title: POST Extract VNF Snapshot Package Content Task - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate extraction of VNF Snapshot Package using an invalid VnfInstanceId in the request body. ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "CREATED". ... Post-Conditions: none @@ -45,7 +45,7 @@ GET Extract VNF Snapshot Package Content Task - Method Not implemented ... Test title: GET Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -57,7 +57,7 @@ PUT Extract VNF Snapshot Package Content Task - Method Not implemented ... Test title: PUT Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -69,7 +69,7 @@ PATCH Extract VNF Snapshot Package Content Task - Method Not implemented ... Test title: PATCH Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ DELETE Extract VNF Snapshot Package Content Task - Method Not implemented ... Test title: DELETE Extract VNF Snapshot Package Content Task - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ POST Extract VNF Snapshot Package Content Task with permitted authorization scop ... Test title: POST Extract VNF Snapshot Package Content Task with permitted authorization scope ... Test objective: The objective is to test that POST method provides the information for the NFVO to start extracting the content of a VNF snapshot package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ POST Extract VNF Snapshot Package Content Task with not permitted authorization ... Test title: POST Extract VNF Snapshot Package Content Task with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to provide the information for the NFVO to start extracting the content of a VNF snapshot package when using not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.7.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot index 5d959c81..a8a979bb 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackage.robot @@ -7,7 +7,7 @@ POST Individual VNF Snapshot Package - Method not implemented ... Test title: POST Individual VNF Snapshot Package - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Information about an individual VNF Snapshot Package - SUCCESSFUL ... Test title: GET Information about an individual VNF Snapshot Package - SUCCESSFUL ... Test objective: The objective is to create a new VNF Snapshot Package resource ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Information about an individual VNF Snapshot Package - NOT FOUND ... Test title: GET Information about an individual VNF Snapshot Package - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot Package fails when using an invalid resource identifier. ... Pre-conditions: At least one individual VNF Snapshot Package is available in the NFV-MANO. - ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ PUT Individual VNF Snapshot Package - Method not implemented ... Test title: PUT Individual VNF Snapshot Package - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package not modified @@ -57,7 +57,7 @@ PATCH Individual VNF Snapshot Package - Modified ... Test title: PATCH Individual VNF Snapshot Package - Modified ... Test objective: The objective is to test that PATCH method updates the information of a VNF Snapshot package ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ PATCH Individual VNF Snapshot Package - Conflict ... Test title: PATCH Individual VNF Snapshot Package - Conflict ... Test objective: The objective is to test that PATCH method does not update the information of a VNF Snapshot package when the state of the VNF snapshot package resource is in a state other than CREATED, ERROR_EXTRACTING or AVAILABLE. ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is in a state other than CREATED, ERROR_EXTRACTING or AVAILABLE. ... Post-Conditions: none @@ -83,7 +83,7 @@ DELETE Individual VNF Snapshot Package ... Test title: DELETE Individual VNF Snapshot Package ... Test objective: The objective is to test that DELETE method deletes an individual VNF Snapshot Package resource ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package deleted @@ -95,7 +95,7 @@ DELETE Individual VNF Snapshot Package - Conflict ... Test title: DELETE Individual VNF Snapshot Package - Method Not im ... Test objective: The objective is to test that DELETE method does not delete a VNF Snapshot package when the state of the VNF snapshot package resource is in a state other than CREATED, ERROR or AVAILABLE. ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is in a state other than CREATED, ERROR or AVAILABLE. ... Post-Conditions: VNF Snapshot Package not deleted @@ -108,7 +108,7 @@ PATCH Individual VNF Snapshot Package with permitted authorization scope ... Test title: PATCH Individual VNF Snapshot Package with permitted authorization scope ... Test objective: The objective is to test that PATCH method updates the information of a VNF Snapshot package with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ PATCH Individual VNF Snapshot Package with not permitted authorization scope ... Test title: PATCH Individual VNF Snapshot Package with not permitted authorization scope ... Test objective: The objective is to test that PATCH method fails to update the information of a VNF Snapshot package when using a not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.3.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot index c4de7649..02a4f3ec 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/IndividualVNFSnapshotPackageArtifact.robot @@ -7,7 +7,7 @@ POST Individual VNF Snapshot Package Artifact - Method not implemented ... Test title: POST Individual VNF Snapshot Package Artifact - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Individual VNF Snapshot Package Artifact - Complete File ... Test title: GET Information about an individual VNF Snapshot Package - Complete File ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Individual VNF Snapshot Package Artifact - Partial Content ... Test title: GET Individual VNF Snapshot Package Artifact - Partial Content ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -47,7 +47,7 @@ GET Individual VNF Snapshot Package Artifact - Range Request Not Supported ... Test title: GET Information about an individual VNF Snapshot Package - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support range requests ... Post-Conditions: none @@ -60,7 +60,7 @@ GET Individual VNF Snapshot Package Artifact - Range Not Satisfiable ... Test title: GET Information about an individual VNF Snapshot Package - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -72,7 +72,7 @@ GET Individual VNF Snapshot Package Artifact - Conflict ... Test title: GET Information about an individual VNF Snapshot Package - Conflict ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Post-Conditions: none @@ -85,7 +85,7 @@ GET Individual VNF Snapshot Package Artifact - External Artifact ... Test title: GET Information about an individual VNF Snapshot Package - External Artifact ... Test objective: The objective is to test that correct response code is returned the referred "Individual VNF Snapshot package artifact" is external to the main VNF snapshot package file created from a build process. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The "Individual VNF Snapshot package artifact" is external to the main VNF snapshot package file created from a build process. ... Post-Conditions: none @@ -98,7 +98,7 @@ PUT Individual VNF Snapshot Package Artifact - Method not implemented ... Test title: PUT Individual VNF Snapshot Package Artifact - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF Snapshot Package not modified @@ -110,7 +110,7 @@ PATCH Individual VNF Snapshot Package Artifact - Method Not implemented ... Test title: PATCH Individual VNF Snapshot Package Artifact ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ DELETE Individual VNF Snapshot Package Artifact - Method Not implemented ... Test title: DELETE Individual VNF Snapshot Package Artifact - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -134,7 +134,7 @@ GET Individual VNF Snapshot Package Artifact with permitted authorization scope ... Test title: GET Information about an individual VNF Snapshot Package with permitted authorization scope ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -147,7 +147,7 @@ GET Individual VNF Snapshot Package Artifact with not permitted authorization sc ... Test title: GET Information about an individual VNF Snapshot Package with not permitted authorization scope ... Test objective: The objective is to test that fetch the whole content of a VNF snapshot package using GET method fails when using not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.10.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot b/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot index 2c09646c..a1728455 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/UploadVNFSnapshotPackageFromUriTask.robot @@ -7,7 +7,7 @@ POST Upload VNF Snapshot Package Content from URI ... Test title: POST Upload VNF Snapshot Package Content from URI ... Test objective: The objective is to test that POST method provides the information for the NFVO to get the content of a VNF snapshot package. ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ POST Upload VNF Snapshot Package Content from URI - Conflict ... Test title: POST Upload VNF Snapshot Package Content from URI - Conflict ... Test objective: The objective is to test that a correct error code is returned when the POST method tries to intiate upload VNF Snapshot Package from URI task and the state of the VNF snapshot package resource is other than "CREATED" or "ERROR". ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The state of the VNF snapshot package resource is other than "CREATED" or "ERROR". ... Post-Conditions: none @@ -32,7 +32,7 @@ GET Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test title: GET Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ PUT Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test title: PUT Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -56,7 +56,7 @@ PATCH Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test title: PATCH Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ DELETE Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test title: DELETE Upload VNF Snapshot Package Content from URI - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ POST Upload VNF Snapshot Package Content from URI with permitted authorization s ... Test title: POST Upload VNF Snapshot Package Content from URI with permitted authorization scope ... Test objective: The objective is to test that POST method provides the information for the NFVO to get the content of a VNF snapshot package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ POST Upload VNF Snapshot Package Content from URI with not permitted authorizati ... Test title: POST Upload VNF Snapshot Package Content from URI with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to provide the information for the NFVO to get the content of a VNF snapshot package when using not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.5.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot index fbf7c770..aecd3fbd 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackageContent.robot @@ -7,7 +7,7 @@ POST VNF Snapshot Package Content - Method not implemented ... Test title: POST VNF Snapshot Package Content - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET VNF Snapshot Package Content - Complete File ... Test title: GET Information about an individual VNF Snapshot Package - Complete File ... Test objective: The objective is to fetch the whole content of a VNF snapshot package using GET method. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET VNF Snapshot Package Content - Partial Content ... Test title: GET VNF Snapshot Package Content - Partial Content ... Test objective: The objective is to fetch partial content of a VNF snapshot package by sending a range request using GET method. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -47,7 +47,7 @@ GET VNF Snapshot Package Content - Range Request Not Supported ... Test title: GET Information about an individual VNF Snapshot Package - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF snapshot package is delivered even with a range request when NFVO does not support range requests. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support range requests ... Post-Conditions: none @@ -60,7 +60,7 @@ GET VNF Snapshot Package Content - Range Not Satisfiable ... Test title: GET Information about an individual VNF Snapshot Package - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF snapshot package file. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports range requests ... Post-Conditions: none @@ -72,7 +72,7 @@ GET VNF Snapshot Package Content - Conflict ... Test title: GET Information about an individual VNF Snapshot Package - Conflict ... Test objective: The objective is to test that an error is returned when the "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: The "state" of the VNF snapshot package has a value different from "AVAILABLE". ... Post-Conditions: none @@ -85,7 +85,7 @@ PUT VNF Snapshot Package Content ... Test title: PUT VNF Snapshot Package Content ... Test objective: The objective is to test that PUT method uploads the content of VNF Snapshot Package. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ PUT VNF Snapshot Package Content - Conflict ... Test title: PUT VNF Snapshot Package Content ... Test objective: The objective is to test that PUT method cannot upload the content of VNF Package when the state of the VNF snapshot package resource is other than "CREATED" or "ERROR".. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: the state of the VNF snapshot package resource is other than "CREATED" or "ERROR". ... Post-Conditions: none @@ -110,7 +110,7 @@ PATCH VNF Snapshot Package Content - Method Not implemented ... Test title: PATCH VNF Snapshot Package Content ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ DELETE VNF Snapshot Package Content - Method Not implemented ... Test title: DELETE VNF Snapshot Package Content - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -134,7 +134,7 @@ PUT VNF Snapshot Package Content with permitted authorization scope ... Test title: PUT VNF Snapshot Package Content with permitted authorization scope ... Test objective: The objective is to test that PUT method uploads the content of VNF Snapshot Package with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -146,7 +146,7 @@ PUT VNF Snapshot Package Content with not permitted authorization scope ... Test title: PUT VNF Snapshot Package Content with not permitted authorization scope ... Test objective: The objective is to test that PUT method fails to upload the content of VNF Snapshot Package when using a not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.4.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none diff --git a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot index b067424c..e7f81a2d 100644 --- a/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot +++ b/SOL005/VNFSnapshotPackageManagement-API/VNFSnapshotPackages.robot @@ -7,7 +7,7 @@ POST Create a VNF Snapshot Package ... Test title: POST Create a VNF Snapshot Package ... Test objective: The objective is to test that POST method creates a VNF Snapshot Package ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -20,7 +20,7 @@ GET information about multiple VNF Snapshot Packages ... Test title: GET information about multiple VNF Snapshot Packages ... Test objective: The objective is to get information about multiples VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -33,7 +33,7 @@ GET information about multiple VNF Snapshot Packages Bad Request Invalid attribu ... Test title: GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -46,7 +46,7 @@ GET information about multiple VNF Snapshot Packages Bad Request Invalid attribu ... Test title: GET information about multiple VNF Snapshot Packages Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF Snapshot Packages with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -59,7 +59,7 @@ GET information about multiple VNF Snapshot Packages with "all_fields" attribute ... Test title: GET information about multiple VNF Snapshot Packages with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_default" attr ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ GET information about multiple VNF Snapshot Packages with "fields" attribute sel ... Test title: GET information about multiple VNF Snapshot Packages with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_default" and ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ GET information about multiple VNF Snapshot Packages with "exclude_fields" attri ... Test title: GET information about multiple VNF Snapshot Packages with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshot Packages ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -124,7 +124,7 @@ GET VNF Snapshot Packages - Bad Request Response too Big ... Test title: GET VNF Snapshot Packages - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing VNF Snapshot Packages list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO does not support paged response. ... Post-Conditions: none @@ -137,7 +137,7 @@ GET VNF Snapshot Packages as Paged Response ... Test title: GET VNF Snapshot Packages as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshot Packages as paged response. ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: NFVO supports paged response. ... Post-Conditions: none @@ -150,7 +150,7 @@ PUT VNF Snapshot Packages - Method not implemented ... Test title: PUT VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.3 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -162,7 +162,7 @@ PATCH VNF Snapshot Packages - Method not implemented ... Test title: PATCH VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.4 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ DELETE VNF Snapshot Packages - Method not implemented ... Test title: DELETE VNF Snapshot Packages - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.5 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: VNF snapshot package is not deleted @@ -186,7 +186,7 @@ GET information about multiple VNF Snapshot Packages with Filter ... Test title: GET information about multiple VNF Snapshot Packages with Filter ... Test objective: The objective is to get information about multiples VNF Snapshot Packages using filter ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.2 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -199,7 +199,7 @@ POST Create a VNF Snapshot Package with permitted authorization scope ... Test title: POST Create a VNF Snapshot Package with permitted authorization scope ... Test objective: The objective is to test that POST method creates a VNF Snapshot Package with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none @@ -212,7 +212,7 @@ POST Create a VNF Snapshot Package with not permitted authorization scope ... Test title: POST Create a VNF Snapshot Package with not permitted authorization scope ... Test objective: The objective is to test that POST method fails to creat a VNF Snapshot Package when using a not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v4.5.1 + ... Reference: Clause 11.4.2.3.1 - ETSI GS NFV-SOL 005 [3] v5.1.1 ... Config ID: Config_prod_NFVO ... Applicability: none ... Post-Conditions: none -- GitLab From 5ec0e64aa02b83327c6ad079e8f68743739060f9 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Fri, 24 Jan 2025 16:52:24 +0000 Subject: [PATCH 139/141] Edit README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0ac9b16f..f8e4a0c9 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ the APIs defined in ETSI NFV GS [SOL002](https://www.etsi.org/deliver/etsi_gs/NF [SOL011](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/011/04.05.01_60/gs_NFV-SOL011v040501p.pdf), [SOL012](https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/012/04.05.01_60/gs_NFV-SOL012v040501p.pdf) in their versions 4.5.1. -More information and download is available at [DGS/NFV-TST010ed511](). +More information and download is available at DGS/NFV-TST010ed511. ## Available versions @@ -34,7 +34,7 @@ The NFV API Conformance test specification is available in the following version | v4.3.1-maintenance | SOL002 SOL003 SOL005 v4.3.1
SOL009 v4.3.1
SOL011 v3.3.1
SOL012 v3.4.1 | [v4.3.1-fix-plu](https://forge.etsi.org/rep/nfv/api-tests/tree/4.3.1-fix-plu/) | | v4.4.1 | SOL002 SOL003 SOL005 v4.4.1
SOL009 v4.4.1
SOL011 v4.4.1
SOL012 v4.4.1 | [v4.4.1](https://forge.etsi.org/rep/nfv/api-tests/tree/4.4.1/)| | v4.5.1 | SOL002 SOL003 SOL005 v4.5.1
SOL009 v4.5.1
SOL011 v4.5.1
SOL012 v4.5.1 | [v4.5.1](https://forge.etsi.org/rep/nfv/api-tests/tree/4.5.1/)| -| v5.1.1 | SOL002 SOL003 SOL005 v5.1.1
SOL009 v5.1.1
SOL011 v4.5.1
SOL012 v4.5.1 | v5.1.1(in progress)| +| v5.1.1 | SOL002 SOL003 SOL005 v5.1.1
SOL009 v4.5.1
SOL011 v4.5.1
SOL012 v4.5.1 | [v5.1.1](https://forge.etsi.org/rep/nfv/api-tests/tree/5.1.1/)| ## Test Specification Overview -- GitLab From 5d3574ccc796ed462b70c725dd6bf245f7d46332 Mon Sep 17 00:00:00 2001 From: "g.bernini" Date: Fri, 24 Jan 2025 18:04:20 +0100 Subject: [PATCH 140/141] updated index file with new ic tests --- indexes/ic_tests_index.csv | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/indexes/ic_tests_index.csv b/indexes/ic_tests_index.csv index 8a89ebf4..6c400657 100644 --- a/indexes/ic_tests_index.csv +++ b/indexes/ic_tests_index.csv @@ -9,4 +9,8 @@ 11.3.1.7,Subscription Creation and Query,SubscriptionCreationAndQuery.robot 11.3.1.8,Subscription Deletion,SubscriptionDeletion.robot 11.3.1.9,VNF Instance Scale Out,VNFInstanceScaleOut.robot -11.3.1.10,VNF Instance Scale In,VNFInstanceScaleIn.robot \ No newline at end of file +11.3.1.10,VNF Instance Scale In,VNFInstanceScaleIn.robot +11.3.1.11,VNF Instance Heal,VNFInstanceHeal.robot +11.3.1.12,VNF Instance Change External Connectivity,VNFInstanceChangeExtConn.robot +11.3.1.13,VNF Lifecycle Operation in FAILED_TEMP status retry,VNFLCORetryingFailedTemp.robot +11.3.1.14,VNF Lifecycle Operation Rollback,VNFLCORollback.robot -- GitLab From e1b214a4f8019e4015037ed183df06e7756d5826 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Thu, 13 Feb 2025 09:49:02 +0000 Subject: [PATCH 141/141] Edit README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f8e4a0c9..d92b53d5 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ The NFV API Conformance test specification is available in the following version | v4.3.1-maintenance | SOL002 SOL003 SOL005 v4.3.1
SOL009 v4.3.1
SOL011 v3.3.1
SOL012 v3.4.1 | [v4.3.1-fix-plu](https://forge.etsi.org/rep/nfv/api-tests/tree/4.3.1-fix-plu/) | | v4.4.1 | SOL002 SOL003 SOL005 v4.4.1
SOL009 v4.4.1
SOL011 v4.4.1
SOL012 v4.4.1 | [v4.4.1](https://forge.etsi.org/rep/nfv/api-tests/tree/4.4.1/)| | v4.5.1 | SOL002 SOL003 SOL005 v4.5.1
SOL009 v4.5.1
SOL011 v4.5.1
SOL012 v4.5.1 | [v4.5.1](https://forge.etsi.org/rep/nfv/api-tests/tree/4.5.1/)| -| v5.1.1 | SOL002 SOL003 SOL005 v5.1.1
SOL009 v4.5.1
SOL011 v4.5.1
SOL012 v4.5.1 | [v5.1.1](https://forge.etsi.org/rep/nfv/api-tests/tree/5.1.1/)| +| v5.1.1 | SOL002 SOL003 SOL005 v5.1.1
SOL009 v5.1.1
SOL011 v4.5.1
SOL012 v4.5.1 | [v5.1.1](https://forge.etsi.org/rep/nfv/api-tests/tree/5.1.1/)| ## Test Specification Overview -- GitLab