summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlaili <lai.li@zte.com.cn>2018-09-11 15:30:38 +0800
committerLi Lai <lai.li@zte.com.cn>2018-09-12 00:54:00 +0000
commitcaeb42684e81773494d28e9af77dd340cfce7784 (patch)
treeb2c3f3cf0adb82d554b7adbf9065c41f3b0849e9
parent7e5d1e88f450db4f17b34216d08b7cad4b09a6ea (diff)
Align gvnfmdriver grant with SOL003
- Modify grant request serializer Change-Id: Ic0a2c6bdae5e86e77cab8a1ac05d8686798a3325 Issue-ID: VFC-1101 Signed-off-by: laili <lai.li@zte.com.cn>
-rw-r--r--gvnfmadapter/driver/interfaces/serializers/__init__.py13
-rw-r--r--gvnfmadapter/driver/interfaces/serializers/grant_request.py192
-rw-r--r--gvnfmadapter/driver/interfaces/serializers/link.py22
-rw-r--r--gvnfmadapter/driver/interfaces/serializers/resource_handle.py40
-rw-r--r--gvnfmadapter/driver/interfaces/serializers/serializers.py (renamed from gvnfmadapter/driver/interfaces/serializers.py)116
-rw-r--r--gvnfmadapter/driver/interfaces/views.py8
6 files changed, 274 insertions, 117 deletions
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
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__)