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