1c63de87297355b202efbcfae9574ea0542b06bb
[pti/o2.git] / o2ims / domain / ocloud_repo.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 import abc\r
16 from typing import List, Set\r
17 from o2ims.domain import ocloud\r
18 \r
19 \r
20 class OcloudRepository(abc.ABC):\r
21     def __init__(self):\r
22         self.seen = set()  # type: Set[ocloud.Ocloud]\r
23 \r
24     def add(self, ocloud: ocloud.Ocloud):\r
25         self._add(ocloud)\r
26         self.seen.add(ocloud)\r
27 \r
28     def get(self, ocloud_id) -> ocloud.Ocloud:\r
29         ocloud = self._get(ocloud_id)\r
30         if ocloud:\r
31             self.seen.add(ocloud)\r
32         return ocloud\r
33 \r
34     def list(self) -> List[ocloud.Ocloud]:\r
35         return self._list()\r
36 \r
37     def update(self, ocloud: ocloud.Ocloud):\r
38         self._update(ocloud)\r
39         self.seen.add(ocloud)\r
40 \r
41     # def update_fields(self, ocloudid: str, updatefields: dict):\r
42     #     self._update(ocloudid, updatefields)\r
43 \r
44     @abc.abstractmethod\r
45     def _add(self, ocloud: ocloud.Ocloud):\r
46         raise NotImplementedError\r
47 \r
48     @abc.abstractmethod\r
49     def _get(self, ocloud_id) -> ocloud.Ocloud:\r
50         raise NotImplementedError\r
51 \r
52     @abc.abstractmethod\r
53     def _update(self, ocloud: ocloud.Ocloud):\r
54         raise NotImplementedError\r
55 \r
56 \r
57 class ResourceTypeRepository(abc.ABC):\r
58     def __init__(self):\r
59         self.seen = set()  # type: Set[ocloud.ResourceType]\r
60 \r
61     def add(self, resource_type: ocloud.ResourceType):\r
62         self._add(resource_type)\r
63         self.seen.add(resource_type)\r
64 \r
65     def get(self, resource_type_id) -> ocloud.ResourceType:\r
66         resource_type = self._get(resource_type_id)\r
67         if resource_type:\r
68             self.seen.add(resource_type)\r
69         return resource_type\r
70 \r
71     def get_by_name(self, resource_type_name) -> ocloud.ResourceType:\r
72         resource_type = self._get_by_name(resource_type_name)\r
73         if resource_type:\r
74             self.seen.add(resource_type)\r
75         return resource_type\r
76 \r
77     def list(self) -> List[ocloud.ResourceType]:\r
78         return self._list()\r
79 \r
80     def update(self, resource_type: ocloud.ResourceType):\r
81         self._update(resource_type)\r
82         self.seen.add(resource_type)\r
83 \r
84     @abc.abstractmethod\r
85     def _add(self, resource_type: ocloud.ResourceType):\r
86         raise NotImplementedError\r
87 \r
88     @abc.abstractmethod\r
89     def _get(self, resource_type_id) -> ocloud.ResourceType:\r
90         raise NotImplementedError\r
91 \r
92     @abc.abstractmethod\r
93     def _get_by_name(self, resource_type_name) -> ocloud.ResourceType:\r
94         raise NotImplementedError\r
95 \r
96     @abc.abstractmethod\r
97     def _update(self, resource_type: ocloud.ResourceType):\r
98         raise NotImplementedError\r
99 \r
100 \r
101 class ResourcePoolRepository(abc.ABC):\r
102     def __init__(self):\r
103         self.seen = set()  # type: Set[ocloud.ResourcePool]\r
104 \r
105     def add(self, resource_pool: ocloud.ResourcePool):\r
106         self._add(resource_pool)\r
107         self.seen.add(resource_pool)\r
108 \r
109     def get(self, resource_pool_id) -> ocloud.ResourcePool:\r
110         resource_pool = self._get(resource_pool_id)\r
111         if resource_pool:\r
112             self.seen.add(resource_pool)\r
113         return resource_pool\r
114 \r
115     def list(self) -> List[ocloud.ResourcePool]:\r
116         return self._list()\r
117 \r
118     def update(self, resource_pool: ocloud.ResourcePool):\r
119         self._update(resource_pool)\r
120         self.seen.add(resource_pool)\r
121 \r
122     @abc.abstractmethod\r
123     def _add(self, resource_pool: ocloud.ResourcePool):\r
124         raise NotImplementedError\r
125 \r
126     @abc.abstractmethod\r
127     def _get(self, resource_pool_id) -> ocloud.ResourcePool:\r
128         raise NotImplementedError\r
129 \r
130     @abc.abstractmethod\r
131     def _update(self, resource_pool: ocloud.ResourcePool):\r
132         raise NotImplementedError\r
133 \r
134 \r
135 class ResourceRepository(abc.ABC):\r
136     def __init__(self):\r
137         self.seen = set()  # type: Set[ocloud.Resource]\r
138 \r
139     def add(self, resource: ocloud.Resource):\r
140         self._add(resource)\r
141         self.seen.add(resource)\r
142 \r
143     def get(self, resource_id) -> ocloud.Resource:\r
144         resource = self._get(resource_id)\r
145         if resource:\r
146             self.seen.add(resource)\r
147         return resource\r
148 \r
149     def list(self, resourcepool_id, **kwargs) -> List[ocloud.Resource]:\r
150         return self._list(resourcepool_id, **kwargs)\r
151 \r
152     def update(self, resource: ocloud.Resource):\r
153         self._update(resource)\r
154         self.seen.add(resource)\r
155 \r
156     @abc.abstractmethod\r
157     def _add(self, resource: ocloud.Resource):\r
158         raise NotImplementedError\r
159 \r
160     @abc.abstractmethod\r
161     def _get(self, resource_id) -> ocloud.Resource:\r
162         raise NotImplementedError\r
163 \r
164     @abc.abstractmethod\r
165     def _list(self, resourcepool_id, **kwargs) -> ocloud.Resource:\r
166         raise NotImplementedError\r
167 \r
168     @abc.abstractmethod\r
169     def _update(self, resource: ocloud.Resource):\r
170         raise NotImplementedError\r
171 \r
172 \r
173 class DeploymentManagerRepository(abc.ABC):\r
174     def __init__(self):\r
175         self.seen = set()  # type: Set[ocloud.DeploymentManager]\r
176 \r
177     def add(self, deployment_manager: ocloud.DeploymentManager):\r
178         self._add(deployment_manager)\r
179         self.seen.add(deployment_manager)\r
180 \r
181     def get(self, deployment_manager_id) -> ocloud.DeploymentManager:\r
182         deployment_manager = self._get(deployment_manager_id)\r
183         if deployment_manager:\r
184             self.seen.add(deployment_manager)\r
185         return deployment_manager\r
186 \r
187     def list(self) -> List[ocloud.DeploymentManager]:\r
188         return self._list()\r
189 \r
190     def update(self, deployment_manager: ocloud.DeploymentManager):\r
191         self._update(deployment_manager)\r
192 \r
193     @abc.abstractmethod\r
194     def _add(self, deployment_manager: ocloud.DeploymentManager):\r
195         raise NotImplementedError\r
196 \r
197     @abc.abstractmethod\r
198     def _get(self, deployment_manager_id) -> ocloud.DeploymentManager:\r
199         raise NotImplementedError\r
200 \r
201     @abc.abstractmethod\r
202     def _update(self, deployment_manager: ocloud.DeploymentManager):\r
203         raise NotImplementedError\r