513907a0feccdab3f587951dab2e311187ab8ce3
[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 \r
17 from o2ims.domain.base import AgRoot\r
18 # from dataclasses import dataclass\r
19 # from datetime import date\r
20 # from typing import Optional, List, Set\r
21 from .resource_type import ResourceTypeEnum\r
22 # from uuid import UUID\r
23 \r
24 \r
25 class Subscription(AgRoot):\r
26     def __init__(self, id: str, callback: str, consumersubid: str = '',\r
27                  filter: str = '') -> None:\r
28         super().__init__()\r
29         self.subscriptionId = id\r
30         self.version_number = 0\r
31         self.callback = callback\r
32         self.consumerSubscriptionId = consumersubid\r
33         self.filter = filter\r
34 \r
35 \r
36 class DeploymentManager(AgRoot):\r
37     def __init__(self, id: str, name: str, ocloudid: str,\r
38                  dmsendpoint: str, description: str = '',\r
39                  supportedLocations: str = '', capabilities: str = '',\r
40                  capacity: str = '') -> None:\r
41         super().__init__()\r
42         self.deploymentManagerId = id\r
43         self.version_number = 0\r
44         self.oCloudId = ocloudid\r
45         self.name = name\r
46         self.description = description\r
47         self.deploymentManagementServiceEndpoint = dmsendpoint\r
48         self.supportedLocations = supportedLocations\r
49         self.capabilities = capabilities\r
50         self.capacity = capacity\r
51         self.extensions = []\r
52 \r
53 \r
54 class ResourcePool(AgRoot):\r
55     def __init__(self, id: str, name: str, location: str,\r
56                  ocloudid: str, gLocationId: str = '',\r
57                  description: str = '') -> None:\r
58         super().__init__()\r
59         self.resourcePoolId = id\r
60         self.version_number = 0\r
61         self.oCloudId = ocloudid\r
62         self.globalLocationId = gLocationId\r
63         self.name = name\r
64         self.location = location\r
65         self.description = description\r
66         self.extensions = []\r
67 \r
68 \r
69 class ResourceType(AgRoot):\r
70     def __init__(self, typeid: str, name: str, typeEnum: ResourceTypeEnum,\r
71                  ocloudid: str, vender: str = '', model: str = '',\r
72                  version: str = '',\r
73                  description: str = '') -> None:\r
74         super().__init__()\r
75         self.resourceTypeId = typeid\r
76         self.oCloudId = ocloudid\r
77         self.resourceTypeEnum = typeEnum.value\r
78         self.name = name\r
79         self.vender = vender\r
80         self.model = model\r
81         self.version = version\r
82         self.description = description\r
83         self.extensions = []\r
84 \r
85 \r
86 class Resource(AgRoot):\r
87     def __init__(self, resourceId: str, resourceTypeId: str,\r
88                  resourcePoolId: str, oCloudId: str = '',\r
89                  parentId: str = '', elements: list = [],\r
90                  description: str = '') -> None:\r
91         super().__init__()\r
92         self.resourceId = resourceId\r
93         self.version_number = 0\r
94         self.oCloudId = oCloudId\r
95         self.resourceTypeId = resourceTypeId\r
96         self.resourcePoolId = resourcePoolId\r
97         self.parentId = parentId\r
98         self.elements = elements\r
99         self.description = description\r
100         self.extensions = []\r
101 \r
102 \r
103 class Ocloud(AgRoot):\r
104     def __init__(self, ocloudid: str, name: str, imsendpoint: str,\r
105                  globalcloudId: str = '',\r
106                  description: str = '', version_number: int = 0) -> None:\r
107         super().__init__()\r
108         self.oCloudId = ocloudid\r
109         self.globalcloudId = globalcloudId\r
110         self.version_number = version_number\r
111         self.name = name\r
112         self.description = description\r
113         self.infrastructureManagementServiceEndpoint = imsendpoint\r
114         self.resourcePools = []\r
115         self.deploymentManagers = []\r
116         self.resourceTypes = []\r
117         self.extensions = []\r
118         # self.events = []\r
119 \r
120     # def addDeploymentManager(self,\r
121     #                          deploymentManager: DeploymentManager):\r
122 \r
123     #     deploymentManager.oCloudId = self.oCloudId\r
124     #     old = filter(\r
125     #         lambda x: x.deploymentManagerId ==\r
126     #         deploymentManager.deploymentManagerId,\r
127     #         self.deploymentManagers)\r
128     #     for o in old or []:\r
129     #         self.deploymentManagers.remove(o)\r
130     #     self.deploymentManagers.append(deploymentManager)\r