From: laili Date: Tue, 11 Sep 2018 07:30:38 +0000 (+0800) Subject: Align gvnfmdriver grant with SOL003 X-Git-Tag: 1.2.0~9 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=caeb42684e81773494d28e9af77dd340cfce7784;p=vfc%2Fnfvo%2Fdriver%2Fvnfm%2Fgvnfm.git Align gvnfmdriver grant with SOL003 - Modify grant request serializer Change-Id: Ic0a2c6bdae5e86e77cab8a1ac05d8686798a3325 Issue-ID: VFC-1101 Signed-off-by: laili --- 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.py b/gvnfmadapter/driver/interfaces/serializers/serializers.py similarity index 85% rename from gvnfmadapter/driver/interfaces/serializers.py rename to gvnfmadapter/driver/interfaces/serializers/serializers.py index 517a974..4936d17 100644 --- a/gvnfmadapter/driver/interfaces/serializers.py +++ b/gvnfmadapter/driver/interfaces/serializers/serializers.py @@ -12,6 +12,9 @@ # 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 = [ @@ -64,84 +67,6 @@ VLS_CHANGE_TYPES = [ ] -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) @@ -259,14 +184,6 @@ class VnfNotifyReqSerializer(serializers.Serializer): 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.", @@ -304,33 +221,6 @@ class VimConnectionInfoSerializer(serializers.Serializer): 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) 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__)