Add framework and apiserver
[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 # from dataclasses import dataclass\r
17 # from datetime import date\r
18 # from typing import Optional, List, Set\r
19 from .resource_type import ResourceTypeEnum\r
20 # from uuid import UUID\r
21 \r
22 \r
23 class DeploymentManager:\r
24     def __init__(self, id: str, name: str, ocloudid: str,\r
25                  dmsendpoint: str) -> None:\r
26         self.deploymentManagerId = id\r
27         self.name = name\r
28         self.oCloudId = ocloudid\r
29         self.deploymentManagementServiceEndpoint = dmsendpoint\r
30         self.extensions = []\r
31 \r
32 \r
33 class ResourcePool:\r
34     def __init__(self, id: str, name: str, location: str,\r
35                  ocloudid: str) -> None:\r
36         self.resourcePoolId = id\r
37         self.name = name\r
38         self.location = location\r
39         self.oCloudId = ocloudid\r
40         self.extensions = []\r
41 \r
42 \r
43 class ResourceType:\r
44     def __init__(self, typeid: str, name: str, typeEnum: ResourceTypeEnum,\r
45                  ocloudid: str) -> None:\r
46         self.resourceTypeId = typeid\r
47         self.resourceTypeEnum = typeEnum.value\r
48         self.name = name\r
49         self.oCloudId = ocloudid\r
50         self.extensions = []\r
51 \r
52 \r
53 class Resource:\r
54     def __init__(self, resourceId: str, resourceTypeId: str,\r
55                  resourcePoolId: str) -> None:\r
56         self.resourceId = resourceId\r
57         self.oCloudId = None  # tbd\r
58         self.resourceTypeId = resourceTypeId\r
59         self.resourcePoolId = resourcePoolId\r
60         self.parentId = None\r
61         self.elements = []\r
62         self.extensions = []\r
63 \r
64 \r
65 class Ocloud:\r
66     def __init__(self, ocloudid: str, name: str, imsendpoint: str,\r
67                  description: str = '', version_number: int = 0) -> None:\r
68 \r
69         self.oCloudId = ocloudid\r
70         self.version_number = version_number\r
71         self.name = name\r
72         self.description = description\r
73         self.infrastructureManagementServiceEndpoint = imsendpoint\r
74         self.resourcePools = []\r
75         self.deploymentManagers = []\r
76         self.resourceTypes = []\r
77         self.extensions = []\r
78         self.events = []\r
79 \r
80     def addDeploymentManager(self,\r
81                              deploymentManager: DeploymentManager):\r
82 \r
83         deploymentManager.oCloudId = self.oCloudId\r
84         old = filter(\r
85             lambda x: x.deploymentManagerId ==\r
86             deploymentManager.deploymentManagerId,\r
87             self.deploymentManagers)\r
88         for o in old or []:\r
89             self.deploymentManagers.remove(o)\r
90         self.deploymentManagers.append(deploymentManager)\r