Add get detail of a resource to API; remove the dependency of the domain in the view...
[pti/o2.git] / o2ims / views / ocloud_dto.py
index 0201451..c1782bf 100644 (file)
 
 from flask_restx import fields
 
-from o2ims.views import api
+from o2ims.views import api_ims_inventory_v1
 
 
 class OcloudDTO:
 
-    ocloud = api.model(
-        "OcloudList",
+    ocloud = api_ims_inventory_v1.model(
+        "OcloudDto",
         {
             'oCloudId': fields.String(required=True),
             'globalCloudId': fields.String,
@@ -33,8 +33,8 @@ class OcloudDTO:
 
 class ResourceTypeDTO:
 
-    resource_type_get = api.model(
-        "ResourceTypeGet",
+    resource_type_get = api_ims_inventory_v1.model(
+        "ResourceTypeGetDto",
         {
             'resourceTypeId': fields.String(required=True,
                                             description='Resource type ID'),
@@ -48,8 +48,8 @@ class ResourceTypeDTO:
 
 class ResourcePoolDTO:
 
-    resource_pool_get = api.model(
-        "ResourcePoolGet",
+    resource_pool_get = api_ims_inventory_v1.model(
+        "ResourcePoolGetDto",
         {
             'resourcePoolId': fields.String(required=True,
                                             description='Resource pool ID'),
@@ -63,35 +63,77 @@ class ResourcePoolDTO:
 
 class ResourceDTO:
 
-    resource_list = api.model(
-        "ResourceList",
+    resource_list = api_ims_inventory_v1.model(
+        "ResourceListDto",
         {
             'resourceId': fields.String(required=True,
                                         description='Resource ID'),
             'resourceTypeId': fields.String,
             'resourcePoolId': fields.String,
+            'name': fields.String,
             'parentId': fields.String,
             'description': fields.String,
         }
     )
 
-    resource_get = api.model(
-        "ResourceGet",
-        {
+    def recursive_resource_mapping(iteration_number=2):
+        resource_json_mapping = {
             'resourceId': fields.String(required=True,
                                         description='Resource ID'),
             'resourceTypeId': fields.String,
             'resourcePoolId': fields.String,
+            'name': fields.String,
             'parentId': fields.String,
             'description': fields.String,
+            'elements': fields.String,
         }
-    )
+        if iteration_number:
+            resource_json_mapping['children'] = fields.List(
+                fields.Nested(ResourceDTO.recursive_resource_mapping(
+                    iteration_number-1)))
+        return api_ims_inventory_v1.model(
+            'ResourceGetDto' + str(iteration_number), resource_json_mapping)
+
+    def _recursive_resource_mapping(self, iteration_number=2):
+        resource_json_mapping = {
+            'resourceId': fields.String(required=True,
+                                        description='Resource ID'),
+            'resourceTypeId': fields.String,
+            'resourcePoolId': fields.String,
+            'name': fields.String,
+            'parentId': fields.String,
+            'description': fields.String,
+        }
+        if iteration_number:
+            resource_json_mapping['children'] = fields.List(
+                fields.Nested(self._recursive_resource_mapping(
+                    iteration_number-1)))
+            # print(type(resource_json_mapping['children']))
+            if resource_json_mapping['children'] is None:
+                del resource_json_mapping['children']
+        return resource_json_mapping
+
+    def get_resource_get(self):
+        return api_ims_inventory_v1.model(
+            'ResourceGetDto',
+            {
+                'resourceId': fields.String(required=True,
+                                            description='Resource ID'),
+                'resourceTypeId': fields.String,
+                'resourcePoolId': fields.String,
+                'name': fields.String,
+                'parentId': fields.String,
+                'description': fields.String,
+                'children': fields.List(fields.Nested(
+                    self._recursive_resource_mapping()))
+            }
+        )
 
 
 class DeploymentManagerDTO:
 
-    deployment_manager_get = api.model(
-        "DeploymentManagerGet",
+    deployment_manager_get = api_ims_inventory_v1.model(
+        "DeploymentManagerGetDto",
         {
             'deploymentManagerId': fields.String(
                 required=True,
@@ -108,8 +150,8 @@ class DeploymentManagerDTO:
 
 class SubscriptionDTO:
 
-    subscription_get = api.model(
-        "SubscriptionGet",
+    subscription_get = api_ims_inventory_v1.model(
+        "SubscriptionGetDto",
         {
             'subscriptionId': fields.String(required=True,
                                             description='Subscription ID'),
@@ -119,8 +161,8 @@ class SubscriptionDTO:
         }
     )
 
-    subscription = api.model(
-        "SubscriptionCreate",
+    subscription = api_ims_inventory_v1.model(
+        "SubscriptionCreateDto",
         {
             'callback': fields.String(
                 required=True, description='Subscription callback address'),
@@ -129,8 +171,8 @@ class SubscriptionDTO:
         }
     )
 
-    subscription_post_resp = api.model(
-        "SubscriptionCreatedResp",
+    subscription_post_resp = api_ims_inventory_v1.model(
+        "SubscriptionCreatedRespDto",
         {
             'subscriptionId': fields.String(required=True,
                                             description='Subscription ID'),