summaryrefslogtreecommitdiffstats
path: root/gvnfmadapter
diff options
context:
space:
mode:
Diffstat (limited to 'gvnfmadapter')
-rw-r--r--gvnfmadapter/driver/interfaces/serializers.py81
-rw-r--r--gvnfmadapter/driver/interfaces/tests.py59
-rw-r--r--gvnfmadapter/driver/interfaces/views.py4
3 files changed, 121 insertions, 23 deletions
diff --git a/gvnfmadapter/driver/interfaces/serializers.py b/gvnfmadapter/driver/interfaces/serializers.py
index 457b0f0..517a974 100644
--- a/gvnfmadapter/driver/interfaces/serializers.py
+++ b/gvnfmadapter/driver/interfaces/serializers.py
@@ -14,7 +14,6 @@
from rest_framework import serializers
-
LCM_OPERATION_TYPES = [
"INSTANTIATE",
"SCALE",
@@ -27,6 +26,7 @@ LCM_OPERATION_TYPES = [
"MODIFY_INFO"
]
+
LCM_OPERATION_STATE_TYPES = [
"STARTING",
"PROCESSING",
@@ -37,6 +37,7 @@ LCM_OPERATION_STATE_TYPES = [
"ROLLED_BACK"
]
+
VNFCS_CHANGE_TYPES = [
"ADDED",
"REMOVED",
@@ -63,6 +64,84 @@ 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)
diff --git a/gvnfmadapter/driver/interfaces/tests.py b/gvnfmadapter/driver/interfaces/tests.py
index c886be7..cefe884 100644
--- a/gvnfmadapter/driver/interfaces/tests.py
+++ b/gvnfmadapter/driver/interfaces/tests.py
@@ -286,31 +286,50 @@ class InterfacesTest(TestCase):
}
}
}
- grant_resp_data = {
- "id": "1",
- "vnfInstanceId": "1",
- "vnfLcmOpOccId": "2",
- "vimConnections": [
- {
- "id": "1",
- "vimId": "1"
- }
- ]
+ grant = {
+ 'id': 'Identifier of the garnt',
+ 'vnfInstanceId': 'Identifier of the related VNF instance',
+ 'vnfLcmOpOccId': 'Identifier of the related VNF LcmOpOcc',
+ 'vimConnections': [],
+ 'zones': [],
+ 'zoneGroups': [],
+ 'computeReservationId': None,
+ 'networkReservationId': None,
+ 'storageReservationId': None,
+ 'addResources': None,
+ 'tempResources': None,
+ 'removeResource': None,
+ 'updateResource': None,
+ 'vimAssets': None,
+ 'extVirtualLinks': None,
+ 'extManagedVirtualLinks': None,
+ 'additionalParams': {},
+ '_links': None
}
- mock_call_req.return_value = [0, json.JSONEncoder().encode(grant_resp_data), '201']
+
+ mock_call_req.return_value = [0, json.JSONEncoder().encode(grant), '201']
response = self.client.put("/api/gvnfmdriver/v1/resource/grant",
data=json.dumps(data), content_type='application/json')
self.assertEqual(status.HTTP_201_CREATED, response.status_code)
expect_resp_data = {
- "id": "1",
- "vnfInstanceId": "1",
- "vnfLcmOpOccId": "2",
- "vimConnections": [
- {
- "id": "1",
- "vimId": "1"
- }
- ]
+ 'id': 'Identifier of the garnt',
+ 'vnfInstanceId': 'Identifier of the related VNF instance',
+ 'vnfLcmOpOccId': 'Identifier of the related VNF LcmOpOcc',
+ 'vimConnections': [],
+ 'zones': [],
+ 'zoneGroups': [],
+ 'computeReservationId': None,
+ 'networkReservationId': None,
+ 'storageReservationId': None,
+ 'addResources': None,
+ 'tempResources': None,
+ 'removeResource': None,
+ 'updateResource': None,
+ 'vimAssets': None,
+ 'extVirtualLinks': None,
+ 'extManagedVirtualLinks': None,
+ 'additionalParams': {},
+ '_links': None
}
self.assertDictEqual(expect_resp_data, response.data)
diff --git a/gvnfmadapter/driver/interfaces/views.py b/gvnfmadapter/driver/interfaces/views.py
index a2972ad..dc9f3f6 100644
--- a/gvnfmadapter/driver/interfaces/views.py
+++ b/gvnfmadapter/driver/interfaces/views.py
@@ -233,7 +233,7 @@ class VnfOperInfo(APIView):
class VnfGrantInfo(APIView):
@swagger_auto_schema(
- request_body=VnfGrantReqSerializer(),
+ request_body=VnfGrantReqSerializer(), # TODO: not used
responses={
status.HTTP_201_CREATED: VnfGrantRespSerializer(),
status.HTTP_404_NOT_FOUND: "The request body is wrong",
@@ -268,7 +268,7 @@ class VnfNotifyInfo(APIView):
status.HTTP_500_INTERNAL_SERVER_ERROR: "The url is invalid"
}
)
- def post(self, request, vnfmtype):
+ def post(self, request, vnfmtype): # TODO: not compatable with VnfIdentifierCreationNotification and VnfIdentifierDeletionNotification
try:
logger.debug("[%s]req_data = %s", fun_name(), request.data)
vnfminstid = ignorcase_get(request.data, 'vnfmInstId')