Add: flask api include resource type, resource pool, resource and deployment manager
[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 Subscription:\r
24     def __init__(self, id: str, callback: str, consumersubid: list = [],\r
25                  filter: list = []) -> None:\r
26         self.subscriptionId = id\r
27         self.callback = callback\r
28         self.consumerSubscriptionId = consumersubid\r
29         self.filter = filter\r
30 \r
31 \r
32 class DeploymentManager:\r
33     def __init__(self, id: str, name: str, ocloudid: str,\r
34                  dmsendpoint: str, description: str = '',\r
35                  supportedLocations: str = '', capabilities: str = '',\r
36                  capacity: str = '') -> None:\r
37         self.deploymentManagerId = id\r
38         self.oCloudId = ocloudid\r
39         self.name = name\r
40         self.description = description\r
41         self.deploymentManagementServiceEndpoint = dmsendpoint\r
42         self.supportedLocations = supportedLocations\r
43         self.capabilities = capabilities\r
44         self.capacity = capacity\r
45         self.extensions = []\r
46 \r
47 \r
48 class ResourcePool:\r
49     def __init__(self, id: str, name: str, location: str,\r
50                  ocloudid: str, gLocationId: str = '',\r
51                  description: str = '') -> None:\r
52         self.resourcePoolId = id\r
53         self.oCloudId = ocloudid\r
54         self.globalLocationId = gLocationId\r
55         self.name = name\r
56         self.location = location\r
57         self.description = description\r
58         self.extensions = []\r
59 \r
60 \r
61 class ResourceType:\r
62     def __init__(self, typeid: str, name: str, typeEnum: ResourceTypeEnum,\r
63                  ocloudid: str, vender: str = '', model: str = '',\r
64                  version: str = '',\r
65                  description: str = '') -> None:\r
66         self.resourceTypeId = typeid\r
67         self.oCloudId = ocloudid\r
68         self.resourceTypeEnum = typeEnum.value\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:\r
78     def __init__(self, resourceId: str, resourceTypeId: str,\r
79                  resourcePoolId: str, oCloudId: str = '',\r
80                  parentId: str = '', elements: list = [],\r
81                  description: str = '') -> None:\r
82         self.resourceId = resourceId\r
83         self.oCloudId = oCloudId\r
84         self.resourceTypeId = resourceTypeId\r
85         self.resourcePoolId = resourcePoolId\r
86         self.parentId = parentId\r
87         self.elements = elements\r
88         self.description = description\r
89         self.extensions = []\r
90 \r
91 \r
92 class Ocloud:\r
93     def __init__(self, ocloudid: str, name: str, imsendpoint: str,\r
94                  globalcloudId: str = '',\r
95                  description: str = '', version_number: int = 0) -> None:\r
96 \r
97         self.oCloudId = ocloudid\r
98         self.globalcloudId = globalcloudId\r
99         self.version_number = version_number\r
100         self.name = name\r
101         self.description = description\r
102         self.infrastructureManagementServiceEndpoint = imsendpoint\r
103         self.resourcePools = []\r
104         self.deploymentManagers = []\r
105         self.resourceTypes = []\r
106         self.extensions = []\r
107         self.events = []\r
108 \r
109     def addDeploymentManager(self,\r
110                              deploymentManager: DeploymentManager):\r
111 \r
112         deploymentManager.oCloudId = self.oCloudId\r
113         old = filter(\r
114             lambda x: x.deploymentManagerId ==\r
115             deploymentManager.deploymentManagerId,\r
116             self.deploymentManagers)\r
117         for o in old or []:\r
118             self.deploymentManagers.remove(o)\r
119         self.deploymentManagers.append(deploymentManager)\r