Align gvnfmdriver grant with SOL003 87/65687/3
authorlaili <lai.li@zte.com.cn>
Tue, 11 Sep 2018 07:30:38 +0000 (15:30 +0800)
committerLi Lai <lai.li@zte.com.cn>
Wed, 12 Sep 2018 00:54:00 +0000 (00:54 +0000)
- Modify grant request serializer

Change-Id: Ic0a2c6bdae5e86e77cab8a1ac05d8686798a3325
Issue-ID: VFC-1101
Signed-off-by: laili <lai.li@zte.com.cn>
gvnfmadapter/driver/interfaces/serializers/__init__.py [new file with mode: 0644]
gvnfmadapter/driver/interfaces/serializers/grant_request.py [new file with mode: 0644]
gvnfmadapter/driver/interfaces/serializers/link.py [new file with mode: 0644]
gvnfmadapter/driver/interfaces/serializers/resource_handle.py [new file with mode: 0644]
gvnfmadapter/driver/interfaces/serializers/serializers.py [moved from gvnfmadapter/driver/interfaces/serializers.py with 85% similarity]
gvnfmadapter/driver/interfaces/views.py

diff --git a/gvnfmadapter/driver/interfaces/serializers/__init__.py b/gvnfmadapter/driver/interfaces/serializers/__init__.py
new file mode 100644 (file)
index 0000000..342c2a8
--- /dev/null
@@ -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 (file)
index 0000000..6b93e1d
--- /dev/null
@@ -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 (file)
index 0000000..1f54425
--- /dev/null
@@ -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 (file)
index 0000000..689c8a9
--- /dev/null
@@ -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
+    )
@@ -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)
index dc9f3f6..42cb1c7 100644 (file)
@@ -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__)