9d9fce73a1d8bbabed4d3d54b89d41d3f66a2769
[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 list(self) -> List[ocloud.ResourceType]:\r
72         return self._list()\r
73 \r
74     def update(self, resource_type: ocloud.ResourceType):\r
75         self._update(resource_type)\r
76         self.seen.add(resource_type)\r
77 \r
78     @abc.abstractmethod\r
79     def _add(self, resource_type: ocloud.ResourceType):\r
80         raise NotImplementedError\r
81 \r
82     @abc.abstractmethod\r
83     def _get(self, resource_type_id) -> ocloud.ResourceType:\r
84         raise NotImplementedError\r
85 \r
86     @abc.abstractmethod\r
87     def _update(self, resource_type: ocloud.ResourceType):\r
88         raise NotImplementedError\r
89 \r
90 \r
91 class ResourcePoolRepository(abc.ABC):\r
92     def __init__(self):\r
93         self.seen = set()  # type: Set[ocloud.ResourcePool]\r
94 \r
95     def add(self, resource_pool: ocloud.ResourcePool):\r
96         self._add(resource_pool)\r
97         self.seen.add(resource_pool)\r
98 \r
99     def get(self, resource_pool_id) -> ocloud.ResourcePool:\r
100         resource_pool = self._get(resource_pool_id)\r
101         if resource_pool:\r
102             self.seen.add(resource_pool)\r
103         return resource_pool\r
104 \r
105     def list(self) -> List[ocloud.ResourcePool]:\r
106         return self._list()\r
107 \r
108     def update(self, resource_pool: ocloud.ResourcePool):\r
109         self._update(resource_pool)\r
110         self.seen.add(resource_pool)\r
111 \r
112     @abc.abstractmethod\r
113     def _add(self, resource_pool: ocloud.ResourcePool):\r
114         raise NotImplementedError\r
115 \r
116     @abc.abstractmethod\r
117     def _get(self, resource_pool_id) -> ocloud.ResourcePool:\r
118         raise NotImplementedError\r
119 \r
120     @abc.abstractmethod\r
121     def _update(self, resource_pool: ocloud.ResourcePool):\r
122         raise NotImplementedError\r
123 \r
124 \r
125 class ResourceRepository(abc.ABC):\r
126     def __init__(self):\r
127         self.seen = set()  # type: Set[ocloud.Resource]\r
128 \r
129     def add(self, resource: ocloud.Resource):\r
130         self._add(resource)\r
131         self.seen.add(resource)\r
132 \r
133     def get(self, resource_id) -> ocloud.Resource:\r
134         resource = self._get(resource_id)\r
135         if resource:\r
136             self.seen.add(resource)\r
137         return resource\r
138 \r
139     def list(self) -> List[ocloud.Resource]:\r
140         return self._list()\r
141 \r
142     def update(self, resource: ocloud.Resource):\r
143         self._update(resource)\r
144         self.seen.add(resource)\r
145 \r
146     @abc.abstractmethod\r
147     def _add(self, resource: ocloud.Resource):\r
148         raise NotImplementedError\r
149 \r
150     @abc.abstractmethod\r
151     def _get(self, resource_id) -> ocloud.Resource:\r
152         raise NotImplementedError\r
153 \r
154     @abc.abstractmethod\r
155     def _update(self, resource: ocloud.Resource):\r
156         raise NotImplementedError\r
157 \r
158 \r
159 class DeploymentManagerRepository(abc.ABC):\r
160     def __init__(self):\r
161         self.seen = set()  # type: Set[ocloud.DeploymentManager]\r
162 \r
163     def add(self, deployment_manager: ocloud.DeploymentManager):\r
164         self._add(deployment_manager)\r
165         self.seen.add(deployment_manager)\r
166 \r
167     def get(self, deployment_manager_id) -> ocloud.DeploymentManager:\r
168         deployment_manager = self._get(deployment_manager_id)\r
169         if deployment_manager:\r
170             self.seen.add(deployment_manager)\r
171         return deployment_manager\r
172 \r
173     def list(self) -> List[ocloud.DeploymentManager]:\r
174         return self._list()\r
175 \r
176     def update(self, deployment_manager: ocloud.DeploymentManager):\r
177         self._update(deployment_manager)\r
178 \r
179     @abc.abstractmethod\r
180     def _add(self, deployment_manager: ocloud.DeploymentManager):\r
181         raise NotImplementedError\r
182 \r
183     @abc.abstractmethod\r
184     def _get(self, deployment_manager_id) -> ocloud.DeploymentManager:\r
185         raise NotImplementedError\r
186 \r
187     @abc.abstractmethod\r
188     def _update(self, deployment_manager: ocloud.DeploymentManager):\r
189         raise NotImplementedError\r
190 \r
191 \r
192 class SubscriptionRepository(abc.ABC):\r
193     def __init__(self):\r
194         self.seen = set()  # type: Set[ocloud.Subscription]\r
195 \r
196     def add(self, subscription: ocloud.Subscription):\r
197         self._add(subscription)\r
198         self.seen.add(subscription)\r
199 \r
200     def get(self, subscription_id) -> ocloud.Subscription:\r
201         subscription = self._get(subscription_id)\r
202         if subscription:\r
203             self.seen.add(subscription)\r
204         return subscription\r
205 \r
206     def list(self) -> List[ocloud.Subscription]:\r
207         return self._list()\r
208 \r
209     def update(self, subscription: ocloud.Subscription):\r
210         self._update(subscription)\r
211 \r
212     @abc.abstractmethod\r
213     def _add(self, subscription: ocloud.Subscription):\r
214         raise NotImplementedError\r
215 \r
216     @abc.abstractmethod\r
217     def _get(self, subscription_id) -> ocloud.Subscription:\r
218         raise NotImplementedError\r
219 \r
220     @abc.abstractmethod\r
221     def _update(self, subscription: ocloud.Subscription):\r
222         raise NotImplementedError\r