Add get detail of a resource to API; remove the dependency of the domain in the view...
[pti/o2.git] / o2ims / domain / ocloud.py
index 68e304e..e3584ed 100644 (file)
@@ -13,6 +13,9 @@
 #  limitations under the License.\r
 \r
 from __future__ import annotations\r
+import json\r
+\r
+from o2common.domain.base import AgRoot, Serializer\r
 # from dataclasses import dataclass\r
 # from datetime import date\r
 # from typing import Optional, List, Set\r
@@ -20,53 +23,112 @@ from .resource_type import ResourceTypeEnum
 # from uuid import UUID\r
 \r
 \r
-class DeploymentManager:\r
+class Subscription(AgRoot, Serializer):\r
+    def __init__(self, id: str, callback: str, consumersubid: str = '',\r
+                 filter: str = '') -> None:\r
+        super().__init__()\r
+        self.subscriptionId = id\r
+        self.version_number = 0\r
+        self.callback = callback\r
+        self.consumerSubscriptionId = consumersubid\r
+        self.filter = filter\r
+\r
+\r
+class DeploymentManager(AgRoot, Serializer):\r
     def __init__(self, id: str, name: str, ocloudid: str,\r
-                 dmsendpoint: str) -> None:\r
+                 dmsendpoint: str, description: str = '',\r
+                 supportedLocations: str = '', capabilities: str = '',\r
+                 capacity: str = '') -> None:\r
+        super().__init__()\r
         self.deploymentManagerId = id\r
-        self.name = name\r
+        self.version_number = 0\r
         self.oCloudId = ocloudid\r
+        self.name = name\r
+        self.description = description\r
         self.deploymentManagementServiceEndpoint = dmsendpoint\r
+        self.supportedLocations = supportedLocations\r
+        self.capabilities = capabilities\r
+        self.capacity = capacity\r
         self.extensions = []\r
 \r
 \r
-class ResourcePool:\r
+class ResourcePool(AgRoot, Serializer):\r
     def __init__(self, id: str, name: str, location: str,\r
-                 ocloudid: str) -> None:\r
+                 ocloudid: str, gLocationId: str = '',\r
+                 description: str = '') -> None:\r
+        super().__init__()\r
         self.resourcePoolId = id\r
+        self.version_number = 0\r
+        self.oCloudId = ocloudid\r
+        self.globalLocationId = gLocationId\r
         self.name = name\r
         self.location = location\r
-        self.oCloudId = ocloudid\r
+        self.description = description\r
         self.extensions = []\r
 \r
 \r
-class ResourceType:\r
+class ResourceType(AgRoot, Serializer):\r
     def __init__(self, typeid: str, name: str, typeEnum: ResourceTypeEnum,\r
-                 ocloudid: str) -> None:\r
+                 ocloudid: str, vender: str = '', model: str = '',\r
+                 version: str = '',\r
+                 description: str = '') -> None:\r
+        super().__init__()\r
         self.resourceTypeId = typeid\r
-        self.resourceTypeEnum = typeEnum.value\r
-        self.name = name\r
+        self.version_number = 0\r
         self.oCloudId = ocloudid\r
+        self.resourceTypeEnum = typeEnum\r
+        self.name = name\r
+        self.vender = vender\r
+        self.model = model\r
+        self.version = version\r
+        self.description = description\r
         self.extensions = []\r
 \r
 \r
-class Resource:\r
+class Resource(AgRoot, Serializer):\r
     def __init__(self, resourceId: str, resourceTypeId: str,\r
-                 resourcePoolId: str) -> None:\r
+                 resourcePoolId: str, name: str, parentId: str = '',\r
+                 gAssetId: str = '', elements: str = '',\r
+                 description: str = '') -> None:\r
+        super().__init__()\r
         self.resourceId = resourceId\r
-        self.oCloudId = None  # tbd\r
+        self.version_number = 0\r
         self.resourceTypeId = resourceTypeId\r
         self.resourcePoolId = resourcePoolId\r
-        self.parentId = None\r
-        self.elements = []\r
+        self.name = name\r
+        self.globalAssetId = gAssetId\r
+        self.parentId = parentId\r
+        self.elements = elements\r
+        self.description = description\r
+        self.children = []\r
         self.extensions = []\r
 \r
+    def set_children(self, children: list):\r
+        self.children = children\r
+\r
+    def serialize(self):\r
+        d = Serializer.serialize(self)\r
+\r
+        if 'elements' in d and d['elements'] != '':\r
+            d['elements'] = json.loads(d['elements'])\r
+\r
+        if not hasattr(self, 'children') or len(self.children) == 0:\r
+            return d\r
+        else:\r
+            d['children'] = []\r
 \r
-class Ocloud:\r
+        for child in self.children:\r
+            d['children'].append(child.serialize())\r
+        return d\r
+\r
+\r
+class Ocloud(AgRoot, Serializer):\r
     def __init__(self, ocloudid: str, name: str, imsendpoint: str,\r
+                 globalcloudId: str = '',\r
                  description: str = '', version_number: int = 0) -> None:\r
-\r
+        super().__init__()\r
         self.oCloudId = ocloudid\r
+        self.globalcloudId = globalcloudId\r
         self.version_number = version_number\r
         self.name = name\r
         self.description = description\r
@@ -75,16 +137,15 @@ class Ocloud:
         self.deploymentManagers = []\r
         self.resourceTypes = []\r
         self.extensions = []\r
-        self.events = []\r
-\r
-    def addDeploymentManager(self,\r
-                             deploymentManager: DeploymentManager):\r
-\r
-        deploymentManager.oCloudId = self.oCloudId\r
-        old = filter(\r
-            lambda x: x.deploymentManagerId ==\r
-            deploymentManager.deploymentManagerId,\r
-            self.deploymentManagers)\r
-        for o in old or []:\r
-            self.deploymentManagers.remove(o)\r
-        self.deploymentManagers.append(deploymentManager)\r
+\r
+    # def addDeploymentManager(self,\r
+    #                          deploymentManager: DeploymentManager):\r
+\r
+    #     deploymentManager.oCloudId = self.oCloudId\r
+    #     old = filter(\r
+    #         lambda x: x.deploymentManagerId ==\r
+    #         deploymentManager.deploymentManagerId,\r
+    #         self.deploymentManagers)\r
+    #     for o in old or []:\r
+    #         self.deploymentManagers.remove(o)\r
+    #     self.deploymentManagers.append(deploymentManager)\r