From caeb42684e81773494d28e9af77dd340cfce7784 Mon Sep 17 00:00:00 2001 From: laili Date: Tue, 11 Sep 2018 15:30:38 +0800 Subject: Align gvnfmdriver grant with SOL003 - Modify grant request serializer Change-Id: Ic0a2c6bdae5e86e77cab8a1ac05d8686798a3325 Issue-ID: VFC-1101 Signed-off-by: laili --- gvnfmadapter/driver/interfaces/serializers.py | 711 --------------------- .../driver/interfaces/serializers/__init__.py | 13 + .../driver/interfaces/serializers/grant_request.py | 192 ++++++ gvnfmadapter/driver/interfaces/serializers/link.py | 22 + .../interfaces/serializers/resource_handle.py | 40 ++ .../driver/interfaces/serializers/serializers.py | 601 +++++++++++++++++ gvnfmadapter/driver/interfaces/views.py | 8 +- 7 files changed, 872 insertions(+), 715 deletions(-) delete mode 100644 gvnfmadapter/driver/interfaces/serializers.py create mode 100644 gvnfmadapter/driver/interfaces/serializers/__init__.py create mode 100644 gvnfmadapter/driver/interfaces/serializers/grant_request.py create mode 100644 gvnfmadapter/driver/interfaces/serializers/link.py create mode 100644 gvnfmadapter/driver/interfaces/serializers/resource_handle.py create mode 100644 gvnfmadapter/driver/interfaces/serializers/serializers.py (limited to 'gvnfmadapter') diff --git a/gvnfmadapter/driver/interfaces/serializers.py b/gvnfmadapter/driver/interfaces/serializers.py deleted file mode 100644 index 517a974..0000000 --- a/gvnfmadapter/driver/interfaces/serializers.py +++ /dev/null @@ -1,711 +0,0 @@ -# Copyright 2018 ZTE Corporation. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from rest_framework import serializers - -LCM_OPERATION_TYPES = [ - "INSTANTIATE", - "SCALE", - "SCALE_TO_LEVEL", - "CHANGE_FLAVOUR", - "TERMINATE", - "HEAL", - "OPERATE", - "CHANGE_EXT_CONN", - "MODIFY_INFO" -] - - -LCM_OPERATION_STATE_TYPES = [ - "STARTING", - "PROCESSING", - "COMPLETED", - "FAILED_TEMP", - "FAILED", - "ROLLING_BACK", - "ROLLED_BACK" -] - - -VNFCS_CHANGE_TYPES = [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY" -] - - -STORAGES_CHANGE_TYPES = [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY" -] - - -VLS_CHANGE_TYPES = [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY", - "LINK_PORT_ADDED", - "LINK_PORT_REMOVED" -] - - -class ResourceHandleSerializer(serializers.Serializer): - vimConnectionId = serializers.CharField( - help_text="Identifier of the VIM connection to manage the resource.", - required=False, - allow_null=True, - allow_blank=True - ) - resourceProviderId = serializers.CharField( - help_text="Identifier of the entity responsible for the management of the resource.", - required=False, - allow_null=True, - allow_blank=True - ) - resourceId = serializers.CharField( - help_text="Identifier of the resource in the scope of the VIM or the resource provider.", - required=True - ) - vimLevelResourceType = serializers.CharField( - help_text="Type of the resource in the scope of the VIM or the resource provider.", - required=False, - allow_null=True, - allow_blank=True - ) - - -class ResourceDefinitionSerializer(serializers.Serializer): - id = serializers.CharField( - help_text="Identifier of this ResourceDefinition, unique at least within the scope of the GrantRequest.", - required=True - ) - type = serializers.ChoiceField( - help_text="Type of the resource definition referenced.", - choices=["COMPUTE", "VL", "STORAGE", "LINKPORT"], - required=True - ) - vduId = serializers.CharField( - help_text="Reference to the related VDU in the VNFD applicable to this resource.", - required=False, - allow_null=True, - allow_blank=True - ) - resourceTemplateId = serializers.CharField( - help_text="Reference to a resource template(such as VnfVirtualLinkDesc) in the VNFD.", - required=False, - allow_null=True, - allow_blank=True - ) - resource = ResourceHandleSerializer( - help_text="Resource information for an existing resource.", - required=False, - allow_null=True - ) - - -class ConstraintResourceRefSerializer(serializers.Serializer): - idType = serializers.ChoiceField( - help_text="The type of the identifier.", - choices=["RES_MGMT", "GRANT"], - required=True - ) - resourceId = serializers.CharField( - help_text="An actual resource-management-level identifier(idType=RES_MGMT), or an identifier that references a ResourceDefinition(idType=GRANT).", - required=True - ) - vimConnectionId = serializers.CharField( - help_text="", - required=False, - allow_null=True, - allow_blank=True - ) - resourceProviderId = serializers.CharField( - help_text="Identifier of the resource provider. It shall only be present when idType = RES_MGMT.", - required=False, - allow_null=True, - allow_blank=True - ) - - -class AdditionalParams(serializers.Serializer): - sdncontroller = serializers.CharField(help_text="sdncontroller", required=False) - NatIpRange = serializers.CharField(help_text="NatIpRange", required=False) - m6000_mng_ip = serializers.CharField(help_text="m6000_mng_ip", required=False) - externalPluginManageNetworkName = serializers.CharField(help_text="externalPluginManageNetworkName", required=False) - location = serializers.CharField(help_text="location", required=False) - externalManageNetworkName = serializers.CharField(help_text="externalManageNetworkName", required=False) - sfc_data_network = serializers.CharField(help_text="sfc_data_network", required=False) - externalDataNetworkName = serializers.CharField(help_text="externalDataNetworkName", required=False) - inputs = serializers.DictField( - help_text="inputs", - child=serializers.CharField(help_text="but i needed to test these 2 fields somehow", allow_blank=True), - required=False, - allow_null=True - ) - - -class VnfInstReqParamsSerializer(serializers.Serializer): - vnfDescriptorId = serializers.CharField( - help_text="Identifier that identifies the VNFD which defines the VNF instance to be created.", - max_length=255, - required=True, - allow_null=True - ) - vnfInstanceName = serializers.CharField( - help_text="Human-readable name of the VNF instance to be created.", - max_length=255, - required=True, - allow_null=False - ) - vnfInstanceDescription = serializers.CharField( - help_text="Human-readable description of the VNF instance to be created.", - max_length=255, - required=False, - allow_null=True - ) - additionalParam = AdditionalParams( - help_text="Additional input parameters for the instantiation process," - " specific to the VNF being instantiated.", - required=True - ) - - -class ResponseSerializer(serializers.Serializer): - vnfInstanceId = serializers.CharField(help_text="VNF instance identifier.", required=True) - jobId = serializers.CharField(help_text="Job ID.", required=True) - - -class VnfTermReqSerializer(serializers.Serializer): - vnfInstanceId = serializers.CharField( - help_text="VNF instance identifier.", - max_length=255, - required=True, - allow_null=True - ) - - -class VnfInfo(serializers.Serializer): - vnfInstanceId = serializers.CharField(help_text="VNF instance identifier.", required=True) - vnfStatus = serializers.CharField(help_text="The instantiation state of the VNF.", required=True) - version = serializers.CharField(help_text="Version of the VNF.", required=True) - - -class VnfQueryRespSerializer(serializers.Serializer): - vnfInfo = VnfInfo( - help_text="The information items about the selected VNF instance(s) that are returned.", - required=True - ) - - -class ResponseDescriptor(serializers.Serializer): - status = serializers.CharField(help_text="status.", required=True) - responsehistorylist = serializers.CharField(help_text="History response messages.", required=True) - responseid = serializers.IntegerField(help_text="Response identifier.", required=True) - errorcode = serializers.CharField(help_text="Errorcode.", required=True) - progress = serializers.IntegerField(help_text="Progress.", required=True) - statusdescription = serializers.CharField(help_text="Status description.", required=True) - - -class OperationStatusInfo(serializers.Serializer): - responsedescriptor = ResponseDescriptor(help_text="Response descriptor.", required=True) - jobid = serializers.CharField(help_text="Job ID.", required=True) - - -class VnfOperRespSerializer(serializers.Serializer): - operationStatusInfo = OperationStatusInfo( - help_text="Operation Status.", - required=True - ) - - -class VnfGrantReqSerializer(serializers.Serializer): - vnfmid = serializers.CharField(help_text="VNFM identifier.", required=True) - nfvoid = serializers.CharField(help_text="NFVO identifier.", required=True) - vimid = serializers.CharField(help_text="VIM identifier.", required=True) - exvimidlist = serializers.CharField(help_text="Extend VIM identifier list.", required=True) - tenant = serializers.CharField(help_text="Tenant name.", required=True) - vnfistanceid = serializers.CharField(help_text="VNF instance identifier.", required=True) - operationright = serializers.CharField(help_text="Operation right.", required=True) - vmlist = serializers.CharField(help_text="VM list.", required=True) - - -class VnfGrantRespSerializer(serializers.Serializer): - vimid = serializers.CharField(help_text="VIM identifier.", required=True) - tenant = serializers.CharField(help_text="Tenant name.", required=True) - - -class VnfNotifyReqSerializer(serializers.Serializer): - nfvoid = serializers.CharField(help_text="NFVO identifier.", required=True) - vnfmid = serializers.CharField(help_text="VNFM identifier.", required=True) - vimid = serializers.CharField(help_text="VIM identifier.", required=True) - timestamp = serializers.CharField(help_text="Timestamp.", required=True) - vnfistanceid = serializers.CharField(help_text="VNF instance identifier.", required=True) - eventtype = serializers.CharField(help_text="Event type.", required=True) - vmlist = serializers.CharField(help_text="VM list.", required=True) - - -class LinkSerializer(serializers.Serializer): - href = serializers.CharField( - help_text="URI of the referenced resource.", - required=True, - allow_null=False, - allow_blank=False) - - -class VimConnectionInfoSerializer(serializers.Serializer): - id = serializers.CharField( - help_text="The identifier of the VIM Connection. This identifier is managed by the NFVO.", - max_length=255, - required=True, - allow_null=False, - allow_blank=False) - vimId = serializers.CharField( - help_text="The identifier of the VIM instance. This identifier is managed by the NFVO.", - max_length=255, - required=False, - allow_null=True, - allow_blank=True) - vimType = serializers.CharField( - help_text="Discriminator for the different types of the VIM information.", - max_length=255, - required=True, - allow_null=False, - allow_blank=False) - interfaceInfo = serializers.DictField( - help_text="Information about the interface or interfaces to the VIM", - child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True), - required=False, - allow_null=True) - accessInfo = serializers.DictField( - help_text="Authentication credentials for accessing the VIM, and other access-related information", - child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True), - required=False, - allow_null=True) - extra = serializers.DictField( - help_text="VIM type specific additional information. \ - The applicable structure, and whether or not this attribute is available, is dependent on the content of vimType.", - child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True), - required=False, - allow_null=True) - - -class ResourceHandleSerializer(serializers.Serializer): - vimConnectionId = serializers.CharField( - help_text="Identifier of the VIM connection to manage the resource.", - max_length=255, - required=False, - allow_null=True, - allow_blank=True) - resourceProviderId = serializers.CharField( - help_text="Identifier of the entity responsible for the management of the resource.", - max_length=255, - required=False, - allow_null=True, - allow_blank=True) - resourceId = serializers.CharField( - help_text="Identifier of the resource in the scope of the VIM or the resource provider.", - required=True, - max_length=255, - allow_null=False, - allow_blank=False) - vimLevelResourceType = serializers.CharField( - help_text="String, type of the resource in the scope of the VIM or the resource provider.", - max_length=255, - required=False, - allow_null=True, - allow_blank=True) - - -class ProblemDetailsSerializer(serializers.Serializer): - type = serializers.CharField(help_text="Type", required=False, allow_null=True) - title = serializers.CharField(help_text="Title", required=False, allow_null=True) - status = serializers.IntegerField(help_text="Status", required=True) - detail = serializers.CharField(help_text="Detail", required=True, allow_null=True) - instance = serializers.CharField(help_text="Instance", required=False, allow_null=True) - additional_details = serializers.ListField( - help_text="Any number of additional attributes, as defined in a " + - "specification or by an implementation.", - required=False, - allow_null=True) - - -class ExtlinkPortInfoSerializer(serializers.Serializer): - id = serializers.CharField( - help_text="Identifier of this link port as provided by the entity that has created the link port.", - max_length=255, - required=True, - allow_blank=False, - allow_null=False) - resourceHandle = ResourceHandleSerializer( - help_text="Reference to the virtualised resource realizing this link port.", - required=True, - allow_null=False) - id = serializers.CharField( - help_text="Identifier of the external CP of the VNF connected to this link port. \ - There shall be at most one link port associated with any external connection point instance.", - max_length=255, - required=False, - allow_blank=True, - allow_null=True) - - -class ExtVirtualLinkInfoSerializer(serializers.Serializer): - id = serializers.CharField( - help_text="Identifier of the external VL and the related external VL information instance. \ - The identifier is assigned by the NFV-MANO entity that manages this VL instance.", - required=True, - max_length=255, - allow_null=False, - allow_blank=False) - resourceHandle = ResourceHandleSerializer( - help_text="Reference to the resource realizing this VL.", - required=True, - allow_null=False) - extlinkPorts = ExtlinkPortInfoSerializer( - help_text="Link ports of this VL.", - many=True, - required=False, - allow_null=True) - - -class VnfInfoModificationsSerializer(serializers.Serializer): - vnfInstanceName = serializers.CharField( - help_text="If present, this attribute signals modifications of the " + - "'vnfInstanceName' attribute in 'VnfInstance'", - max_length=255, - required=False, - allow_null=True, - allow_blank=True) - vnfInstanceDescription = serializers.CharField( - help_text="If present, this attribute signals modifications of the " + - "'vnfInstanceDescription' attribute in 'VnfInstance'", - required=False, - allow_null=True, - allow_blank=True) - vnfdId = serializers.CharField( - help_text="If present, this attribute signals modifications of the " + - "'vnfdId' attribute in 'VnfInstance'", - max_length=255, - required=False, - allow_null=True, - allow_blank=True) - vnfProvider = serializers.CharField( - help_text="If present, this attribute signals modifications of the " + - "'vnfProvider' attribute in 'VnfInstance'", - max_length=255, - required=False, - allow_null=True) - vnfProductName = serializers.CharField( - help_text="If present, this attribute signals modifications of the " + - "'vnfProductName' attribute in 'vnfInstance'", - max_length=255, - required=False, - allow_null=True, - allow_blank=True) - vnfSoftwareVersion = serializers.CharField( - help_text="If present, this attribute signals modifications of the " + - "'vnfSoftwareVersion' attribute in 'VnfInstance'.", - max_length=255, - required=False, - allow_null=True, - allow_blank=True) - vnfdVersion = serializers.CharField( - help_text="If present, this attribute signals modifications of the " + - "'vnfdVersion' attribute in 'VnfInstance'. ", - max_length=255, - required=False, - allow_null=True, - allow_blank=False) - vnfPkgId = serializers.CharField( - help_text="If present, this attribute signals modifications of the " + - "'vnfPkgId' attribute in 'VnfInstance'.", - max_length=255, - required=False, - allow_null=True, - allow_blank=False) - vnfConfigurableProperties = serializers.DictField( - help_text="If present, this attribute signals modifications of the " + - "'vnfConfigurableProperties' attribute in 'VnfInstance'. ", - child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True), - required=False, - allow_null=True,) - vimConnectionInfo = VimConnectionInfoSerializer( - help_text="If present, this attribute signals modifications of certain" + - "entries in the 'vimConnectionInfo'", - required=False, - many=True, - allow_null=True) - metadata = serializers.DictField( - help_text="If present, this attribute signals modifications of certain" + - "'metadata' attribute in 'vnfInstance'.", - child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True), - required=False, - allow_null=True) - extensions = serializers.DictField( - help_text="If present, this attribute signals modifications of certain" + - "'extensions' attribute in 'vnfInstance'.", - child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True), - required=False, - allow_null=True) - - -class LcmOpLinkSerializer(serializers.Serializer): - self = LinkSerializer( - help_text="URI of this resource.", - required=True, - allow_null=False) - vnfInstance = serializers.CharField( - help_text="Link to the VNF instance that the operation applies to.", - required=True) - grant = serializers.CharField( - help_text="Link to the grant for this operation, if one exists.", - required=False) - cancel = serializers.CharField( - help_text="Link to the task resource that represents the 'cancel' " + - "operation for this VNF LCM operation occurrence.", - required=False) - retry = serializers.CharField( - help_text="Link to the task resource that represents the 'retry' " + - "operation for this VNF LCM operation occurrence, if" + - " retrying is currently allowed", - required=False) - rollback = serializers.CharField( - help_text="Link to the task resource that represents the 'cancel' " + - "operation for this VNF LCM operation occurrence.", - required=False) - fail = serializers.CharField( - help_text="Link to the task resource that represents the 'fail' " + - "operation for this VNF LCM operation occurrence.", - required=False) - - -class AffectedVnfcsSerializer(serializers.Serializer): - id = serializers.UUIDField( - help_text="Identifier of the Vnfc instance, identifying the " + - "applicable 'vnfcResourceInfo' entry in the 'VnfInstance' data type", - required=True - ) - vduId = serializers.UUIDField( - help_text="Identifier of the related VDU in the VNFD.", - required=True - ) - changeType = serializers.ChoiceField( - help_text="Signals the type of change", - required=True, - choices=VNFCS_CHANGE_TYPES - ) - affectedVnfcCpIds = serializers.ListField( - help_text="Identifiers of CP(s) of the VNFC instance that " + - "were affected by the change", - required=False, - child=serializers.UUIDField(required=True) - ) - addedStorageResourceIds = serializers.ListField( - help_text="References to VirtualStorage resources that " + - "have been added", - required=False, - child=serializers.UUIDField() - ) - removedStorageResourceIds = serializers.ListField( - help_text="References to VirtualStorage resources that " + - "have been removed.", - required=False, - child=serializers.UUIDField() - ) - metadata = serializers.DictField( - help_text="Metadata about this resource. ", - required=False, - allow_null=True) - computeResource = ResourceHandleSerializer( - help_text="Reference to the VirtualCompute resource.", - required=True, - allow_null=False) - - -class AffectedStoragesSerializer(serializers.Serializer): - id = serializers.UUIDField( - help_text="Identifier of the Storage instance, identifying the " + - "applicable 'virtualStorageResourceInfo' entry in the 'VnfInstance' data type", - required=True - ) - virtualStorageDescId = serializers.UUIDField( - help_text="Identifier of the related VirtualStorage descriptor " + - "in the VNFD. ", - required=True - ) - changeType = serializers.ChoiceField( - help_text="Signals the type of change", - required=True, - choices=STORAGES_CHANGE_TYPES - ) - metadata = serializers.DictField( - help_text="Metadata about this resource. ", - required=False, - allow_null=True) - storageResource = ResourceHandleSerializer( - help_text="Reference to the VirtualStorage resource.", - required=True, - allow_null=False) - - -class AffectedVLsSerializer(serializers.Serializer): - id = serializers.UUIDField( - help_text="Identifier of the virtual link instance, identifying " + - "the applicable 'vnfVirtualLinkResourceInfo' ", - required=True - ) - virtualLinkDescId = serializers.UUIDField( - help_text="Identifier of the related VLD in the VNFD.", - required=True - ) - changeType = serializers.ChoiceField( - help_text="Signals the type of change", - required=True, - choices=VLS_CHANGE_TYPES - ) - metadata = serializers.DictField( - help_text="Metadata about this resource. ", - required=False, - allow_null=True) - networkResource = ResourceHandleSerializer( - help_text="Reference to the VirtualNetwork resource.", - required=True, - allow_null=False) - - -class ResourceChangesSerializer(serializers.Serializer): - affectedVnfcs = AffectedVnfcsSerializer( - help_text="Information about VNFC instances that were affected " + - "during the lifecycle operation.", - required=False, - many=True - ) - affectedVirtualLinks = AffectedVLsSerializer( - help_text="Information about VL instances that were affected " + - "during the lifecycle operation. ", - required=False, - many=True - ) - affectedVirtualStorages = AffectedStoragesSerializer( - help_text="Information about virtualised storage instances that " + - "were affected during the lifecycle operation", - required=False, - many=True - ) - - -class VNFLCMOpOccSerializer(serializers.Serializer): - id = serializers.CharField( - help_text="Identifier of this VNF lifecycle management operation" + - "occurrence,", - max_length=255, - required=True, - allow_null=False - ) - operationState = serializers.ChoiceField( - help_text="The state of the VNF LCM operation occurrence. ", - required=True, - choices=LCM_OPERATION_STATE_TYPES - ) - stateEnteredTime = serializers.CharField( - help_text="Date-time when the current state was entered.", - max_length=50 - ) - startTime = serializers.CharField( - help_text="Date-time of the start of the operation.", - max_length=50 - ) - vnfInstanceId = serializers.UUIDField( - help_text="Identifier of the VNF instance to which the operation" + - "applies" - ) - grantId = serializers.UUIDField( - help_text="Identifier of the grant related to this VNF LCM operation " + - "occurrence, if such grant exists.", - allow_null=True - ) - operation = serializers.ChoiceField( - help_text="The lifecycle management operation", - required=True, - choices=LCM_OPERATION_TYPES - ) - isAutomaticInvocation = serializers.BooleanField( - help_text="Set to true if this VNF LCM operation occurrence has " + - "been triggered by an automated procedure inside the VNFM. " + - "Set to False otherwise.", - default=False - ) - operationParams = serializers.DictField( - help_text="Input parameters of the LCM operation. This attribute " + - "shall be formatted according to the request data type of the " + - "related LCM operation. The following mapping between operationType and the " + - "data type of this attribute shall apply: " + - "1. INSTANTIATE: InstantiateVnfRequest" + - "2. SCALE: ScaleVnfRequest " + - "3. SCALE_TO_LEVEL: ScaleVnfToLevelRequest " + - "4. CHANGE_FLAVOUR: ChangeVnfFlavourRequest " + - "5. OPERATE: OperateVnfRequest " + - "6. HEAL: HealVnfRequest " + - "7. CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest " + - "8. TERMINATE: TerminateVnfRequest " + - "9. MODIFY_INFO: VnfInfoModifications", - required=True, - allow_null=False - ) - isCancelPending = serializers.BooleanField( - help_text="If the VNF LCM operation occurrence is in 'STARTING'" + - "'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.", - required=True - ) - cancelMode = serializers.CharField( - help_text="The mode of an ongoing cancellation. Shall be present " + - "when isCancelPending=true, and shall be None otherwise.", - allow_null=True, - required=False - ) - error = ProblemDetailsSerializer( - help_text="If 'operationState' is 'FAILED_TEMP' or 'FAILED' or " + - "'PROCESSING' or 'ROLLING_BACK' and previous value of 'operationState' " + - "was 'FAILED_TEMP' this attribute shall be present ", - allow_null=True, - required=False - ) - resourceChanges = ResourceChangesSerializer( - help_text="It contains information about the cumulative changes " + - "to virtualised resources that were performed so far by the LCM " + - "operation since its start, if applicable.", - required=False, - allow_null=True) - changedInfo = VnfInfoModificationsSerializer( - help_text="Information about the changed VNF instance information, " + - "including VNF configurable properties", - required=False, - allow_null=True) - changedExtConnectivity = ExtVirtualLinkInfoSerializer( - help_text="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' is set to 'CHANGE_EXT_CONN'. Shall be absent otherwise.", - many=True, - required=False, - allow_null=True) - _links = LcmOpLinkSerializer( - help_text="Links to resources related to this resource.", - required=True) diff --git a/gvnfmadapter/driver/interfaces/serializers/__init__.py b/gvnfmadapter/driver/interfaces/serializers/__init__.py new file mode 100644 index 0000000..342c2a8 --- /dev/null +++ b/gvnfmadapter/driver/interfaces/serializers/__init__.py @@ -0,0 +1,13 @@ +# Copyright 2018 ZTE Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/gvnfmadapter/driver/interfaces/serializers/grant_request.py b/gvnfmadapter/driver/interfaces/serializers/grant_request.py new file mode 100644 index 0000000..6b93e1d --- /dev/null +++ b/gvnfmadapter/driver/interfaces/serializers/grant_request.py @@ -0,0 +1,192 @@ +# Copyright 2018 ZTE Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from driver.interfaces.serializers.link import LinkSerializer +from driver.interfaces.serializers.resource_handle import ResourceHandleSerializer + +from rest_framework import serializers + + +class ResourceDefinitionSerializer(serializers.Serializer): + id = serializers.CharField( + help_text="Identifier of this ResourceDefinition, unique at least within the scope of the GrantRequest.", + required=True + ) + type = serializers.ChoiceField( + help_text="Type of the resource definition referenced.", + choices=["COMPUTE", "VL", "STORAGE", "LINKPORT"], + required=True + ) + vduId = serializers.CharField( + help_text="Reference to the related VDU in the VNFD applicable to this resource.", + required=False, + allow_null=True, + allow_blank=True + ) + resourceTemplateId = serializers.CharField( + help_text="Reference to a resource template(such as VnfVirtualLinkDesc) in the VNFD.", + required=False, + allow_null=True, + allow_blank=True + ) + resource = ResourceHandleSerializer( + help_text="Resource information for an existing resource.", + required=False, + allow_null=True + ) + + +class ConstraintResourceRefSerializer(serializers.Serializer): + idType = serializers.ChoiceField( + help_text="The type of the identifier.", + choices=["RES_MGMT", "GRANT"], + required=True + ) + resourceId = serializers.CharField( + help_text="An actual resource-management-level identifier(idType=RES_MGMT), or an identifier that references a ResourceDefinition(idType=GRANT).", + required=True + ) + vimConnectionId = serializers.CharField( + help_text="", + required=False, + allow_null=True, + allow_blank=True + ) + resourceProviderId = serializers.CharField( + help_text="Identifier of the resource provider. It shall only be present when idType = RES_MGMT.", + required=False, + allow_null=True, + allow_blank=True + ) + + +class PlacementConstraintSerializer(serializers.Serializer): + affinityOrAntiAffinity = serializers.ChoiceField( + help_text="The type of the constraint.", + choices=["AFFINITY", "ANTI_AFFINITY"], + required=True + ) + scope = serializers.ChoiceField( + help_text="The scope of the placement constraint indicating the category of the place where the constraint applies.", + choices=["NFVI_POP", "ZONE", "ZONE_GROUP", "NFVI_NODE"], + required=True + ) + resource = ConstraintResourceRefSerializer( + help_text="References to resources in the constraint rule.", + many=True, + required=False + ) + + +class VimConstraintSerializer(serializers.Serializer): + sameResourceGroup = serializers.BooleanField( + help_text="Set to true when the constraint applies not only to the same VIM connection, but also to the same infrastructure resource group.", + required=False + ) + resource = ConstraintResourceRefSerializer( + help_text="References to resources in the constraint rule.", + many=True, + required=False + ) + + +class GrantRequestLinksSerializer(serializers.Serializer): + vnfLcmOpOcc = LinkSerializer( + help_text="Related VNF lifecycle management operation occurrence.", + required=True + ) + vnfInstance = LinkSerializer( + help_text="Related VNF instance.", + required=True + ) + + +class GrantRequestSerializer(serializers.Serializer): + vnfInstanceId = serializers.CharField( + help_text="Identifier of the VNF instance which this grant request is related to.", + required=True + ) + vnfLcmOpOccId = serializers.CharField( + help_text="The identifier of the VNF lifecycle management operation occurrence associated to the GrantRequest.", + required=False, # TODO required + allow_null=True, + allow_blank=True + ) + vnfdId = serializers.CharField( + help_text="Identifier of the VNFD that defines the VNF for which the LCM operation is to be granted.", + required=False, # TODO required + allow_null=True, + allow_blank=True + ) + flavourId = serializers.CharField( + help_text="Identifier of the VNF deployment flavour of the VNFD that defines the VNF for which the LCM operation is to be granted.", + required=False, + allow_null=True, + allow_blank=True + ) + operation = serializers.ChoiceField( + help_text="The lifecycle management operation for which granting is requested.", + choices=["INSTANTIATE", "SCALE", "SCALE_TO_LEVEL", "CHANGE_FLAVOUR", "TERMINATE", "HEAL", "OPERATE", "CHANGE_EXT_CONN", "MODIFY_INFO"], + required=True + ) + isAutomaticInvocation = serializers.BooleanField( + help_text="Set to true if this VNF LCM operation occurrence has been triggered by an automated procedure inside the VNFM, set to false otherwise.", + required=True + ) + instantiationLevelId = serializers.CharField( + help_text="If operation=INSTANTIATE, the identifier of the instantiation level may be provided as an alternative way to define the resources to be added.", + required=False, + allow_null=True, + allow_blank=True + ) + addResources = ResourceDefinitionSerializer( + help_text="List of resource definitions in the VNFD for resources to be added by the LCM operation.", + many=True, + required=False + ) + tempResources = ResourceDefinitionSerializer( + help_text="List of resource definitions in the VNFD for resources to be temporarily instantiated during the runtime of the LCM operation.", + many=True, + required=False + ) + removeResources = ResourceDefinitionSerializer( + help_text="Provides the definitions of resources to be removed by the LCM operation.", + many=True, + required=False + ) + updateResources = ResourceDefinitionSerializer( + help_text="Provides the definitions of resources to be modified by the LCM operation.", + many=True, + required=False + ) + placementConstraints = PlacementConstraintSerializer( + help_text="Placement constraints that the VNFM may send to the NFVO in order to influence the resource placement decision.", + many=True, + required=False + ) + vimConstraints = VimConstraintSerializer( + help_text="Used by the VNFM to require that multiple resources are managed through the same VIM connection.", + many=True, + required=False + ) + additionalParams = serializers.DictField( + help_text="Additional parameters passed by the VNFM.", + child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True), + required=False, + allow_null=True + ) + _links = GrantRequestLinksSerializer( + help_text="Links to resources related to this request.", + required=False # TODO required + ) diff --git a/gvnfmadapter/driver/interfaces/serializers/link.py b/gvnfmadapter/driver/interfaces/serializers/link.py new file mode 100644 index 0000000..1f54425 --- /dev/null +++ b/gvnfmadapter/driver/interfaces/serializers/link.py @@ -0,0 +1,22 @@ +# Copyright 2018 ZTE Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from rest_framework import serializers + + +class LinkSerializer(serializers.Serializer): + href = serializers.CharField( + help_text="URI of the referenced resource.", + required=True + ) diff --git a/gvnfmadapter/driver/interfaces/serializers/resource_handle.py b/gvnfmadapter/driver/interfaces/serializers/resource_handle.py new file mode 100644 index 0000000..689c8a9 --- /dev/null +++ b/gvnfmadapter/driver/interfaces/serializers/resource_handle.py @@ -0,0 +1,40 @@ +# Copyright 2018 ZTE Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from rest_framework import serializers + + +class ResourceHandleSerializer(serializers.Serializer): + vimConnectionId = serializers.CharField( + help_text="Identifier of the VIM connection to manage the resource.", + required=False, + allow_null=True, + allow_blank=True + ) + resourceProviderId = serializers.CharField( + help_text="Identifier of the entity responsible for the management of the resource.", + required=False, + allow_null=True, + allow_blank=True + ) + resourceId = serializers.CharField( + help_text="Identifier of the resource in the scope of the VIM or the resource provider.", + required=True + ) + vimLevelResourceType = serializers.CharField( + help_text="Type of the resource in the scope of the VIM or the resource provider.", + required=False, + allow_null=True, + allow_blank=True + ) diff --git a/gvnfmadapter/driver/interfaces/serializers/serializers.py b/gvnfmadapter/driver/interfaces/serializers/serializers.py new file mode 100644 index 0000000..4936d17 --- /dev/null +++ b/gvnfmadapter/driver/interfaces/serializers/serializers.py @@ -0,0 +1,601 @@ +# Copyright 2018 ZTE Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from driver.interfaces.serializers.link import LinkSerializer +from driver.interfaces.serializers.resource_handle import ResourceHandleSerializer + +from rest_framework import serializers + +LCM_OPERATION_TYPES = [ + "INSTANTIATE", + "SCALE", + "SCALE_TO_LEVEL", + "CHANGE_FLAVOUR", + "TERMINATE", + "HEAL", + "OPERATE", + "CHANGE_EXT_CONN", + "MODIFY_INFO" +] + + +LCM_OPERATION_STATE_TYPES = [ + "STARTING", + "PROCESSING", + "COMPLETED", + "FAILED_TEMP", + "FAILED", + "ROLLING_BACK", + "ROLLED_BACK" +] + + +VNFCS_CHANGE_TYPES = [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" +] + + +STORAGES_CHANGE_TYPES = [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" +] + + +VLS_CHANGE_TYPES = [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY", + "LINK_PORT_ADDED", + "LINK_PORT_REMOVED" +] + + +class AdditionalParams(serializers.Serializer): + sdncontroller = serializers.CharField(help_text="sdncontroller", required=False) + NatIpRange = serializers.CharField(help_text="NatIpRange", required=False) + m6000_mng_ip = serializers.CharField(help_text="m6000_mng_ip", required=False) + externalPluginManageNetworkName = serializers.CharField(help_text="externalPluginManageNetworkName", required=False) + location = serializers.CharField(help_text="location", required=False) + externalManageNetworkName = serializers.CharField(help_text="externalManageNetworkName", required=False) + sfc_data_network = serializers.CharField(help_text="sfc_data_network", required=False) + externalDataNetworkName = serializers.CharField(help_text="externalDataNetworkName", required=False) + inputs = serializers.DictField( + help_text="inputs", + child=serializers.CharField(help_text="but i needed to test these 2 fields somehow", allow_blank=True), + required=False, + allow_null=True + ) + + +class VnfInstReqParamsSerializer(serializers.Serializer): + vnfDescriptorId = serializers.CharField( + help_text="Identifier that identifies the VNFD which defines the VNF instance to be created.", + max_length=255, + required=True, + allow_null=True + ) + vnfInstanceName = serializers.CharField( + help_text="Human-readable name of the VNF instance to be created.", + max_length=255, + required=True, + allow_null=False + ) + vnfInstanceDescription = serializers.CharField( + help_text="Human-readable description of the VNF instance to be created.", + max_length=255, + required=False, + allow_null=True + ) + additionalParam = AdditionalParams( + help_text="Additional input parameters for the instantiation process," + " specific to the VNF being instantiated.", + required=True + ) + + +class ResponseSerializer(serializers.Serializer): + vnfInstanceId = serializers.CharField(help_text="VNF instance identifier.", required=True) + jobId = serializers.CharField(help_text="Job ID.", required=True) + + +class VnfTermReqSerializer(serializers.Serializer): + vnfInstanceId = serializers.CharField( + help_text="VNF instance identifier.", + max_length=255, + required=True, + allow_null=True + ) + + +class VnfInfo(serializers.Serializer): + vnfInstanceId = serializers.CharField(help_text="VNF instance identifier.", required=True) + vnfStatus = serializers.CharField(help_text="The instantiation state of the VNF.", required=True) + version = serializers.CharField(help_text="Version of the VNF.", required=True) + + +class VnfQueryRespSerializer(serializers.Serializer): + vnfInfo = VnfInfo( + help_text="The information items about the selected VNF instance(s) that are returned.", + required=True + ) + + +class ResponseDescriptor(serializers.Serializer): + status = serializers.CharField(help_text="status.", required=True) + responsehistorylist = serializers.CharField(help_text="History response messages.", required=True) + responseid = serializers.IntegerField(help_text="Response identifier.", required=True) + errorcode = serializers.CharField(help_text="Errorcode.", required=True) + progress = serializers.IntegerField(help_text="Progress.", required=True) + statusdescription = serializers.CharField(help_text="Status description.", required=True) + + +class OperationStatusInfo(serializers.Serializer): + responsedescriptor = ResponseDescriptor(help_text="Response descriptor.", required=True) + jobid = serializers.CharField(help_text="Job ID.", required=True) + + +class VnfOperRespSerializer(serializers.Serializer): + operationStatusInfo = OperationStatusInfo( + help_text="Operation Status.", + required=True + ) + + +class VnfGrantReqSerializer(serializers.Serializer): + vnfmid = serializers.CharField(help_text="VNFM identifier.", required=True) + nfvoid = serializers.CharField(help_text="NFVO identifier.", required=True) + vimid = serializers.CharField(help_text="VIM identifier.", required=True) + exvimidlist = serializers.CharField(help_text="Extend VIM identifier list.", required=True) + tenant = serializers.CharField(help_text="Tenant name.", required=True) + vnfistanceid = serializers.CharField(help_text="VNF instance identifier.", required=True) + operationright = serializers.CharField(help_text="Operation right.", required=True) + vmlist = serializers.CharField(help_text="VM list.", required=True) + + +class VnfGrantRespSerializer(serializers.Serializer): + vimid = serializers.CharField(help_text="VIM identifier.", required=True) + tenant = serializers.CharField(help_text="Tenant name.", required=True) + + +class VnfNotifyReqSerializer(serializers.Serializer): + nfvoid = serializers.CharField(help_text="NFVO identifier.", required=True) + vnfmid = serializers.CharField(help_text="VNFM identifier.", required=True) + vimid = serializers.CharField(help_text="VIM identifier.", required=True) + timestamp = serializers.CharField(help_text="Timestamp.", required=True) + vnfistanceid = serializers.CharField(help_text="VNF instance identifier.", required=True) + eventtype = serializers.CharField(help_text="Event type.", required=True) + vmlist = serializers.CharField(help_text="VM list.", required=True) + + +class VimConnectionInfoSerializer(serializers.Serializer): + id = serializers.CharField( + help_text="The identifier of the VIM Connection. This identifier is managed by the NFVO.", + max_length=255, + required=True, + allow_null=False, + allow_blank=False) + vimId = serializers.CharField( + help_text="The identifier of the VIM instance. This identifier is managed by the NFVO.", + max_length=255, + required=False, + allow_null=True, + allow_blank=True) + vimType = serializers.CharField( + help_text="Discriminator for the different types of the VIM information.", + max_length=255, + required=True, + allow_null=False, + allow_blank=False) + interfaceInfo = serializers.DictField( + help_text="Information about the interface or interfaces to the VIM", + child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True), + required=False, + allow_null=True) + accessInfo = serializers.DictField( + help_text="Authentication credentials for accessing the VIM, and other access-related information", + child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True), + required=False, + allow_null=True) + extra = serializers.DictField( + help_text="VIM type specific additional information. \ + The applicable structure, and whether or not this attribute is available, is dependent on the content of vimType.", + child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True), + required=False, + allow_null=True) + + +class ProblemDetailsSerializer(serializers.Serializer): + type = serializers.CharField(help_text="Type", required=False, allow_null=True) + title = serializers.CharField(help_text="Title", required=False, allow_null=True) + status = serializers.IntegerField(help_text="Status", required=True) + detail = serializers.CharField(help_text="Detail", required=True, allow_null=True) + instance = serializers.CharField(help_text="Instance", required=False, allow_null=True) + additional_details = serializers.ListField( + help_text="Any number of additional attributes, as defined in a " + + "specification or by an implementation.", + required=False, + allow_null=True) + + +class ExtlinkPortInfoSerializer(serializers.Serializer): + id = serializers.CharField( + help_text="Identifier of this link port as provided by the entity that has created the link port.", + max_length=255, + required=True, + allow_blank=False, + allow_null=False) + resourceHandle = ResourceHandleSerializer( + help_text="Reference to the virtualised resource realizing this link port.", + required=True, + allow_null=False) + id = serializers.CharField( + help_text="Identifier of the external CP of the VNF connected to this link port. \ + There shall be at most one link port associated with any external connection point instance.", + max_length=255, + required=False, + allow_blank=True, + allow_null=True) + + +class ExtVirtualLinkInfoSerializer(serializers.Serializer): + id = serializers.CharField( + help_text="Identifier of the external VL and the related external VL information instance. \ + The identifier is assigned by the NFV-MANO entity that manages this VL instance.", + required=True, + max_length=255, + allow_null=False, + allow_blank=False) + resourceHandle = ResourceHandleSerializer( + help_text="Reference to the resource realizing this VL.", + required=True, + allow_null=False) + extlinkPorts = ExtlinkPortInfoSerializer( + help_text="Link ports of this VL.", + many=True, + required=False, + allow_null=True) + + +class VnfInfoModificationsSerializer(serializers.Serializer): + vnfInstanceName = serializers.CharField( + help_text="If present, this attribute signals modifications of the " + + "'vnfInstanceName' attribute in 'VnfInstance'", + max_length=255, + required=False, + allow_null=True, + allow_blank=True) + vnfInstanceDescription = serializers.CharField( + help_text="If present, this attribute signals modifications of the " + + "'vnfInstanceDescription' attribute in 'VnfInstance'", + required=False, + allow_null=True, + allow_blank=True) + vnfdId = serializers.CharField( + help_text="If present, this attribute signals modifications of the " + + "'vnfdId' attribute in 'VnfInstance'", + max_length=255, + required=False, + allow_null=True, + allow_blank=True) + vnfProvider = serializers.CharField( + help_text="If present, this attribute signals modifications of the " + + "'vnfProvider' attribute in 'VnfInstance'", + max_length=255, + required=False, + allow_null=True) + vnfProductName = serializers.CharField( + help_text="If present, this attribute signals modifications of the " + + "'vnfProductName' attribute in 'vnfInstance'", + max_length=255, + required=False, + allow_null=True, + allow_blank=True) + vnfSoftwareVersion = serializers.CharField( + help_text="If present, this attribute signals modifications of the " + + "'vnfSoftwareVersion' attribute in 'VnfInstance'.", + max_length=255, + required=False, + allow_null=True, + allow_blank=True) + vnfdVersion = serializers.CharField( + help_text="If present, this attribute signals modifications of the " + + "'vnfdVersion' attribute in 'VnfInstance'. ", + max_length=255, + required=False, + allow_null=True, + allow_blank=False) + vnfPkgId = serializers.CharField( + help_text="If present, this attribute signals modifications of the " + + "'vnfPkgId' attribute in 'VnfInstance'.", + max_length=255, + required=False, + allow_null=True, + allow_blank=False) + vnfConfigurableProperties = serializers.DictField( + help_text="If present, this attribute signals modifications of the " + + "'vnfConfigurableProperties' attribute in 'VnfInstance'. ", + child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True), + required=False, + allow_null=True,) + vimConnectionInfo = VimConnectionInfoSerializer( + help_text="If present, this attribute signals modifications of certain" + + "entries in the 'vimConnectionInfo'", + required=False, + many=True, + allow_null=True) + metadata = serializers.DictField( + help_text="If present, this attribute signals modifications of certain" + + "'metadata' attribute in 'vnfInstance'.", + child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True), + required=False, + allow_null=True) + extensions = serializers.DictField( + help_text="If present, this attribute signals modifications of certain" + + "'extensions' attribute in 'vnfInstance'.", + child=serializers.CharField(help_text="KeyValue Pairs", allow_blank=True), + required=False, + allow_null=True) + + +class LcmOpLinkSerializer(serializers.Serializer): + self = LinkSerializer( + help_text="URI of this resource.", + required=True, + allow_null=False) + vnfInstance = serializers.CharField( + help_text="Link to the VNF instance that the operation applies to.", + required=True) + grant = serializers.CharField( + help_text="Link to the grant for this operation, if one exists.", + required=False) + cancel = serializers.CharField( + help_text="Link to the task resource that represents the 'cancel' " + + "operation for this VNF LCM operation occurrence.", + required=False) + retry = serializers.CharField( + help_text="Link to the task resource that represents the 'retry' " + + "operation for this VNF LCM operation occurrence, if" + + " retrying is currently allowed", + required=False) + rollback = serializers.CharField( + help_text="Link to the task resource that represents the 'cancel' " + + "operation for this VNF LCM operation occurrence.", + required=False) + fail = serializers.CharField( + help_text="Link to the task resource that represents the 'fail' " + + "operation for this VNF LCM operation occurrence.", + required=False) + + +class AffectedVnfcsSerializer(serializers.Serializer): + id = serializers.UUIDField( + help_text="Identifier of the Vnfc instance, identifying the " + + "applicable 'vnfcResourceInfo' entry in the 'VnfInstance' data type", + required=True + ) + vduId = serializers.UUIDField( + help_text="Identifier of the related VDU in the VNFD.", + required=True + ) + changeType = serializers.ChoiceField( + help_text="Signals the type of change", + required=True, + choices=VNFCS_CHANGE_TYPES + ) + affectedVnfcCpIds = serializers.ListField( + help_text="Identifiers of CP(s) of the VNFC instance that " + + "were affected by the change", + required=False, + child=serializers.UUIDField(required=True) + ) + addedStorageResourceIds = serializers.ListField( + help_text="References to VirtualStorage resources that " + + "have been added", + required=False, + child=serializers.UUIDField() + ) + removedStorageResourceIds = serializers.ListField( + help_text="References to VirtualStorage resources that " + + "have been removed.", + required=False, + child=serializers.UUIDField() + ) + metadata = serializers.DictField( + help_text="Metadata about this resource. ", + required=False, + allow_null=True) + computeResource = ResourceHandleSerializer( + help_text="Reference to the VirtualCompute resource.", + required=True, + allow_null=False) + + +class AffectedStoragesSerializer(serializers.Serializer): + id = serializers.UUIDField( + help_text="Identifier of the Storage instance, identifying the " + + "applicable 'virtualStorageResourceInfo' entry in the 'VnfInstance' data type", + required=True + ) + virtualStorageDescId = serializers.UUIDField( + help_text="Identifier of the related VirtualStorage descriptor " + + "in the VNFD. ", + required=True + ) + changeType = serializers.ChoiceField( + help_text="Signals the type of change", + required=True, + choices=STORAGES_CHANGE_TYPES + ) + metadata = serializers.DictField( + help_text="Metadata about this resource. ", + required=False, + allow_null=True) + storageResource = ResourceHandleSerializer( + help_text="Reference to the VirtualStorage resource.", + required=True, + allow_null=False) + + +class AffectedVLsSerializer(serializers.Serializer): + id = serializers.UUIDField( + help_text="Identifier of the virtual link instance, identifying " + + "the applicable 'vnfVirtualLinkResourceInfo' ", + required=True + ) + virtualLinkDescId = serializers.UUIDField( + help_text="Identifier of the related VLD in the VNFD.", + required=True + ) + changeType = serializers.ChoiceField( + help_text="Signals the type of change", + required=True, + choices=VLS_CHANGE_TYPES + ) + metadata = serializers.DictField( + help_text="Metadata about this resource. ", + required=False, + allow_null=True) + networkResource = ResourceHandleSerializer( + help_text="Reference to the VirtualNetwork resource.", + required=True, + allow_null=False) + + +class ResourceChangesSerializer(serializers.Serializer): + affectedVnfcs = AffectedVnfcsSerializer( + help_text="Information about VNFC instances that were affected " + + "during the lifecycle operation.", + required=False, + many=True + ) + affectedVirtualLinks = AffectedVLsSerializer( + help_text="Information about VL instances that were affected " + + "during the lifecycle operation. ", + required=False, + many=True + ) + affectedVirtualStorages = AffectedStoragesSerializer( + help_text="Information about virtualised storage instances that " + + "were affected during the lifecycle operation", + required=False, + many=True + ) + + +class VNFLCMOpOccSerializer(serializers.Serializer): + id = serializers.CharField( + help_text="Identifier of this VNF lifecycle management operation" + + "occurrence,", + max_length=255, + required=True, + allow_null=False + ) + operationState = serializers.ChoiceField( + help_text="The state of the VNF LCM operation occurrence. ", + required=True, + choices=LCM_OPERATION_STATE_TYPES + ) + stateEnteredTime = serializers.CharField( + help_text="Date-time when the current state was entered.", + max_length=50 + ) + startTime = serializers.CharField( + help_text="Date-time of the start of the operation.", + max_length=50 + ) + vnfInstanceId = serializers.UUIDField( + help_text="Identifier of the VNF instance to which the operation" + + "applies" + ) + grantId = serializers.UUIDField( + help_text="Identifier of the grant related to this VNF LCM operation " + + "occurrence, if such grant exists.", + allow_null=True + ) + operation = serializers.ChoiceField( + help_text="The lifecycle management operation", + required=True, + choices=LCM_OPERATION_TYPES + ) + isAutomaticInvocation = serializers.BooleanField( + help_text="Set to true if this VNF LCM operation occurrence has " + + "been triggered by an automated procedure inside the VNFM. " + + "Set to False otherwise.", + default=False + ) + operationParams = serializers.DictField( + help_text="Input parameters of the LCM operation. This attribute " + + "shall be formatted according to the request data type of the " + + "related LCM operation. The following mapping between operationType and the " + + "data type of this attribute shall apply: " + + "1. INSTANTIATE: InstantiateVnfRequest" + + "2. SCALE: ScaleVnfRequest " + + "3. SCALE_TO_LEVEL: ScaleVnfToLevelRequest " + + "4. CHANGE_FLAVOUR: ChangeVnfFlavourRequest " + + "5. OPERATE: OperateVnfRequest " + + "6. HEAL: HealVnfRequest " + + "7. CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest " + + "8. TERMINATE: TerminateVnfRequest " + + "9. MODIFY_INFO: VnfInfoModifications", + required=True, + allow_null=False + ) + isCancelPending = serializers.BooleanField( + help_text="If the VNF LCM operation occurrence is in 'STARTING'" + + "'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.", + required=True + ) + cancelMode = serializers.CharField( + help_text="The mode of an ongoing cancellation. Shall be present " + + "when isCancelPending=true, and shall be None otherwise.", + allow_null=True, + required=False + ) + error = ProblemDetailsSerializer( + help_text="If 'operationState' is 'FAILED_TEMP' or 'FAILED' or " + + "'PROCESSING' or 'ROLLING_BACK' and previous value of 'operationState' " + + "was 'FAILED_TEMP' this attribute shall be present ", + allow_null=True, + required=False + ) + resourceChanges = ResourceChangesSerializer( + help_text="It contains information about the cumulative changes " + + "to virtualised resources that were performed so far by the LCM " + + "operation since its start, if applicable.", + required=False, + allow_null=True) + changedInfo = VnfInfoModificationsSerializer( + help_text="Information about the changed VNF instance information, " + + "including VNF configurable properties", + required=False, + allow_null=True) + changedExtConnectivity = ExtVirtualLinkInfoSerializer( + help_text="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' is set to 'CHANGE_EXT_CONN'. Shall be absent otherwise.", + many=True, + required=False, + allow_null=True) + _links = LcmOpLinkSerializer( + help_text="Links to resources related to this resource.", + required=True) diff --git a/gvnfmadapter/driver/interfaces/views.py b/gvnfmadapter/driver/interfaces/views.py index dc9f3f6..42cb1c7 100644 --- a/gvnfmadapter/driver/interfaces/views.py +++ b/gvnfmadapter/driver/interfaces/views.py @@ -23,13 +23,13 @@ from rest_framework import status from rest_framework.response import Response from rest_framework.views import APIView +from driver.interfaces.serializers.serializers import VnfInstReqParamsSerializer, ResponseSerializer +from driver.interfaces.serializers.serializers import VnfNotifyReqSerializer, VNFLCMOpOccSerializer +from driver.interfaces.serializers.serializers import VnfOperRespSerializer, VnfGrantReqSerializer, VnfGrantRespSerializer +from driver.interfaces.serializers.serializers import VnfTermReqSerializer, VnfQueryRespSerializer from driver.pub.exceptions import GvnfmDriverException from driver.pub.utils import restcall from driver.pub.utils.restcall import req_by_msb -from driver.interfaces.serializers import VnfInstReqParamsSerializer, ResponseSerializer -from driver.interfaces.serializers import VnfTermReqSerializer, VnfQueryRespSerializer -from driver.interfaces.serializers import VnfOperRespSerializer, VnfGrantReqSerializer, VnfGrantRespSerializer -from driver.interfaces.serializers import VnfNotifyReqSerializer, VNFLCMOpOccSerializer logger = logging.getLogger(__name__) -- cgit 1.2.3-korg