Add: flask api include resource type, resource pool, resource and deployment manager
[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 \r
40     # def update_fields(self, ocloudid: str, updatefields: dict):\r
41     #     self._update(ocloudid, updatefields)\r
42 \r
43     @abc.abstractmethod\r
44     def _add(self, ocloud: ocloud.Ocloud):\r
45         raise NotImplementedError\r
46 \r
47     @abc.abstractmethod\r
48     def _get(self, ocloud_id) -> ocloud.Ocloud:\r
49         raise NotImplementedError\r
50 \r
51     @abc.abstractmethod\r
52     def _update(self, ocloud: ocloud.Ocloud):\r
53         raise NotImplementedError\r
54 \r
55 \r
56 class ResourceTypeRepository(abc.ABC):\r
57     def __init__(self):\r
58         self.seen = set()  # type: Set[ocloud.ResourceType]\r
59 \r
60     def add(self, resource_type: ocloud.ResourceType):\r
61         self._add(resource_type)\r
62         self.seen.add(resource_type)\r
63 \r
64     def get(self, resource_type_id) -> ocloud.ResourceType:\r
65         resource_type = self._get(resource_type_id)\r
66         if resource_type:\r
67             self.seen.add(resource_type)\r
68         return resource_type\r
69 \r
70     def list(self) -> List[ocloud.ResourceType]:\r
71         return self._list()\r
72 \r
73     def update(self, resource_type: ocloud.ResourceType):\r
74         self._update(resource_type)\r
75 \r
76     @abc.abstractmethod\r
77     def _add(self, resource_type: ocloud.ResourceType):\r
78         raise NotImplementedError\r
79 \r
80     @abc.abstractmethod\r
81     def _get(self, resource_type_id) -> ocloud.ResourceType:\r
82         raise NotImplementedError\r
83 \r
84     @abc.abstractmethod\r
85     def _update(self, resource_type: ocloud.ResourceType):\r
86         raise NotImplementedError\r
87 \r
88 \r
89 class ResourcePoolRepository(abc.ABC):\r
90     def __init__(self):\r
91         self.seen = set()  # type: Set[ocloud.ResourcePool]\r
92 \r
93     def add(self, resource_pool: ocloud.ResourcePool):\r
94         self._add(resource_pool)\r
95         self.seen.add(resource_pool)\r
96 \r
97     def get(self, resource_pool_id) -> ocloud.ResourcePool:\r
98         resource_pool = self._get(resource_pool_id)\r
99         if resource_pool:\r
100             self.seen.add(resource_pool)\r
101         return resource_pool\r
102 \r
103     def list(self) -> List[ocloud.ResourcePool]:\r
104         return self._list()\r
105 \r
106     def update(self, resource_pool: ocloud.ResourcePool):\r
107         self._update(resource_pool)\r
108 \r
109     @abc.abstractmethod\r
110     def _add(self, resource_pool: ocloud.ResourcePool):\r
111         raise NotImplementedError\r
112 \r
113     @abc.abstractmethod\r
114     def _get(self, resource_pool_id) -> ocloud.ResourcePool:\r
115         raise NotImplementedError\r
116 \r
117     @abc.abstractmethod\r
118     def _update(self, resource_pool: ocloud.ResourcePool):\r
119         raise NotImplementedError\r
120 \r
121 \r
122 class ResourceRepository(abc.ABC):\r
123     def __init__(self):\r
124         self.seen = set()  # type: Set[ocloud.Resource]\r
125 \r
126     def add(self, resource: ocloud.Resource):\r
127         self._add(resource)\r
128         self.seen.add(resource)\r
129 \r
130     def get(self, resource_id) -> ocloud.Resource:\r
131         resource = self._get(resource_id)\r
132         if resource:\r
133             self.seen.add(resource)\r
134         return resource\r
135 \r
136     def list(self) -> List[ocloud.Resource]:\r
137         return self._list()\r
138 \r
139     def update(self, resource: ocloud.Resource):\r
140         self._update(resource)\r
141 \r
142     @abc.abstractmethod\r
143     def _add(self, resource: ocloud.Resource):\r
144         raise NotImplementedError\r
145 \r
146     @abc.abstractmethod\r
147     def _get(self, resource_id) -> ocloud.Resource:\r
148         raise NotImplementedError\r
149 \r
150     @abc.abstractmethod\r
151     def _update(self, resource: ocloud.Resource):\r
152         raise NotImplementedError\r