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