d60b08eca088b77987a25f31074172fc5cef6986
[pti/o2.git] / o2ims / domain / ocloud.py
1 # Copyright (C) 2021 Wind River Systems, Inc.\r
2 #\r
3 #  Licensed under the Apache License, Version 2.0 (the "License");\r
4 #  you may not use this file except in compliance with the License.\r
5 #  You may obtain a copy of the License at\r
6 #\r
7 #      http://www.apache.org/licenses/LICENSE-2.0\r
8 #\r
9 #  Unless required by applicable law or agreed to in writing, software\r
10 #  distributed under the License is distributed on an "AS IS" BASIS,\r
11 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
12 #  See the License for the specific language governing permissions and\r
13 #  limitations under the License.\r
14 \r
15 from __future__ import annotations\r
16 import json\r
17 \r
18 from o2common.domain.base import AgRoot, Serializer\r
19 # from dataclasses import dataclass\r
20 # from datetime import date\r
21 # from typing import Optional, List, Set\r
22 from .resource_type import ResourceTypeEnum\r
23 # from uuid import UUID\r
24 \r
25 \r
26 class DeploymentManager(AgRoot, Serializer):\r
27     def __init__(self, id: str, name: str, ocloudid: str,\r
28                  dmsendpoint: str, description: str = '',\r
29                  supportedLocations: str = '', capabilities: str = '',\r
30                  capacity: str = '') -> None:\r
31         super().__init__()\r
32         self.deploymentManagerId = id\r
33         self.version_number = 0\r
34         self.oCloudId = ocloudid\r
35         self.name = name\r
36         self.description = description\r
37         self.deploymentManagementServiceEndpoint = dmsendpoint\r
38         self.supportedLocations = supportedLocations\r
39         self.capabilities = capabilities\r
40         self.capacity = capacity\r
41         self.extensions = []\r
42 \r
43 \r
44 class ResourcePool(AgRoot, Serializer):\r
45     def __init__(self, id: str, name: str, location: str,\r
46                  ocloudid: str, gLocationId: str = '',\r
47                  description: str = '') -> None:\r
48         super().__init__()\r
49         self.resourcePoolId = id\r
50         self.version_number = 0\r
51         self.oCloudId = ocloudid\r
52         self.globalLocationId = gLocationId\r
53         self.name = name\r
54         self.location = location\r
55         self.description = description\r
56         self.extensions = []\r
57 \r
58 \r
59 class ResourceType(AgRoot, Serializer):\r
60     def __init__(self, typeid: str, name: str, typeEnum: ResourceTypeEnum,\r
61                  ocloudid: str, vender: str = '', model: str = '',\r
62                  version: str = '',\r
63                  description: str = '') -> None:\r
64         super().__init__()\r
65         self.resourceTypeId = typeid\r
66         self.version_number = 0\r
67         self.oCloudId = ocloudid\r
68         self.resourceTypeEnum = typeEnum\r
69         self.name = name\r
70         self.vender = vender\r
71         self.model = model\r
72         self.version = version\r
73         self.description = description\r
74         self.extensions = []\r
75 \r
76 \r
77 class Resource(AgRoot, Serializer):\r
78     def __init__(self, resourceId: str, resourceTypeId: str,\r
79                  resourcePoolId: str, name: str, parentId: str = '',\r
80                  gAssetId: str = '', elements: str = '',\r
81                  description: str = '') -> None:\r
82         super().__init__()\r
83         self.resourceId = resourceId\r
84         self.version_number = 0\r
85         self.resourceTypeId = resourceTypeId\r
86         self.resourcePoolId = resourcePoolId\r
87         self.name = name\r
88         self.globalAssetId = gAssetId\r
89         self.parentId = parentId\r
90         self.elements = elements\r
91         self.description = description\r
92         self.children = []\r
93         self.extensions = []\r
94 \r
95     def set_children(self, children: list):\r
96         self.children = children\r
97 \r
98     def set_resource_type_name(self, resource_type_name: str):\r
99         self.resourceTypeName = resource_type_name\r
100 \r
101     def serialize(self):\r
102         d = Serializer.serialize(self)\r
103 \r
104         if 'elements' in d and d['elements'] != '':\r
105             d['elements'] = json.loads(d['elements'])\r
106 \r
107         if not hasattr(self, 'children') or len(self.children) == 0:\r
108             return d\r
109         else:\r
110             d['children'] = []\r
111 \r
112         for child in self.children:\r
113             d['children'].append(child.serialize())\r
114         return d\r
115 \r
116 \r
117 class Ocloud(AgRoot, Serializer):\r
118     def __init__(self, ocloudid: str, name: str, imsendpoint: str,\r
119                  globalcloudId: str = '',\r
120                  description: str = '', version_number: int = 0) -> None:\r
121         super().__init__()\r
122         self.oCloudId = ocloudid\r
123         self.globalcloudId = globalcloudId\r
124         self.version_number = version_number\r
125         self.name = name\r
126         self.description = description\r
127         self.infrastructureManagementServiceEndpoint = imsendpoint\r
128         self.resourcePools = []\r
129         self.deploymentManagers = []\r
130         self.resourceTypes = []\r
131         self.extensions = []\r
132 \r
133     # def addDeploymentManager(self,\r
134     #                          deploymentManager: DeploymentManager):\r
135 \r
136     #     deploymentManager.oCloudId = self.oCloudId\r
137     #     old = filter(\r
138     #         lambda x: x.deploymentManagerId ==\r
139     #         deploymentManager.deploymentManagerId,\r
140     #         self.deploymentManagers)\r
141     #     for o in old or []:\r
142     #         self.deploymentManagers.remove(o)\r
143     #     self.deploymentManagers.append(deploymentManager)\r