e3584ed315b9829e24d0960e27c0c9411b26b7d5
[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 Subscription(AgRoot, Serializer):\r
27     def __init__(self, id: str, callback: str, consumersubid: str = '',\r
28                  filter: str = '') -> None:\r
29         super().__init__()\r
30         self.subscriptionId = id\r
31         self.version_number = 0\r
32         self.callback = callback\r
33         self.consumerSubscriptionId = consumersubid\r
34         self.filter = filter\r
35 \r
36 \r
37 class DeploymentManager(AgRoot, Serializer):\r
38     def __init__(self, id: str, name: str, ocloudid: str,\r
39                  dmsendpoint: str, description: str = '',\r
40                  supportedLocations: str = '', capabilities: str = '',\r
41                  capacity: str = '') -> None:\r
42         super().__init__()\r
43         self.deploymentManagerId = id\r
44         self.version_number = 0\r
45         self.oCloudId = ocloudid\r
46         self.name = name\r
47         self.description = description\r
48         self.deploymentManagementServiceEndpoint = dmsendpoint\r
49         self.supportedLocations = supportedLocations\r
50         self.capabilities = capabilities\r
51         self.capacity = capacity\r
52         self.extensions = []\r
53 \r
54 \r
55 class ResourcePool(AgRoot, Serializer):\r
56     def __init__(self, id: str, name: str, location: str,\r
57                  ocloudid: str, gLocationId: str = '',\r
58                  description: str = '') -> None:\r
59         super().__init__()\r
60         self.resourcePoolId = id\r
61         self.version_number = 0\r
62         self.oCloudId = ocloudid\r
63         self.globalLocationId = gLocationId\r
64         self.name = name\r
65         self.location = location\r
66         self.description = description\r
67         self.extensions = []\r
68 \r
69 \r
70 class ResourceType(AgRoot, Serializer):\r
71     def __init__(self, typeid: str, name: str, typeEnum: ResourceTypeEnum,\r
72                  ocloudid: str, vender: str = '', model: str = '',\r
73                  version: str = '',\r
74                  description: str = '') -> None:\r
75         super().__init__()\r
76         self.resourceTypeId = typeid\r
77         self.version_number = 0\r
78         self.oCloudId = ocloudid\r
79         self.resourceTypeEnum = typeEnum\r
80         self.name = name\r
81         self.vender = vender\r
82         self.model = model\r
83         self.version = version\r
84         self.description = description\r
85         self.extensions = []\r
86 \r
87 \r
88 class Resource(AgRoot, Serializer):\r
89     def __init__(self, resourceId: str, resourceTypeId: str,\r
90                  resourcePoolId: str, name: str, parentId: str = '',\r
91                  gAssetId: str = '', elements: str = '',\r
92                  description: str = '') -> None:\r
93         super().__init__()\r
94         self.resourceId = resourceId\r
95         self.version_number = 0\r
96         self.resourceTypeId = resourceTypeId\r
97         self.resourcePoolId = resourcePoolId\r
98         self.name = name\r
99         self.globalAssetId = gAssetId\r
100         self.parentId = parentId\r
101         self.elements = elements\r
102         self.description = description\r
103         self.children = []\r
104         self.extensions = []\r
105 \r
106     def set_children(self, children: list):\r
107         self.children = children\r
108 \r
109     def serialize(self):\r
110         d = Serializer.serialize(self)\r
111 \r
112         if 'elements' in d and d['elements'] != '':\r
113             d['elements'] = json.loads(d['elements'])\r
114 \r
115         if not hasattr(self, 'children') or len(self.children) == 0:\r
116             return d\r
117         else:\r
118             d['children'] = []\r
119 \r
120         for child in self.children:\r
121             d['children'].append(child.serialize())\r
122         return d\r
123 \r
124 \r
125 class Ocloud(AgRoot, Serializer):\r
126     def __init__(self, ocloudid: str, name: str, imsendpoint: str,\r
127                  globalcloudId: str = '',\r
128                  description: str = '', version_number: int = 0) -> None:\r
129         super().__init__()\r
130         self.oCloudId = ocloudid\r
131         self.globalcloudId = globalcloudId\r
132         self.version_number = version_number\r
133         self.name = name\r
134         self.description = description\r
135         self.infrastructureManagementServiceEndpoint = imsendpoint\r
136         self.resourcePools = []\r
137         self.deploymentManagers = []\r
138         self.resourceTypes = []\r
139         self.extensions = []\r
140 \r
141     # def addDeploymentManager(self,\r
142     #                          deploymentManager: DeploymentManager):\r
143 \r
144     #     deploymentManager.oCloudId = self.oCloudId\r
145     #     old = filter(\r
146     #         lambda x: x.deploymentManagerId ==\r
147     #         deploymentManager.deploymentManagerId,\r
148     #         self.deploymentManagers)\r
149     #     for o in old or []:\r
150     #         self.deploymentManagers.remove(o)\r
151     #     self.deploymentManagers.append(deploymentManager)\r