1 # Copyright (C) 2021 Wind River Systems, Inc.
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
7 # http://www.apache.org/licenses/LICENSE-2.0
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.
15 from flask_restx import fields
17 from o2ims.views.api_ns import api_ims_inventory_v1
22 ocloud = api_ims_inventory_v1.model(
25 'oCloudId': fields.String(required=True),
26 'globalCloudId': fields.String,
27 'name': fields.String,
28 'description': fields.String,
29 'infrastructureManagementServiceEndpoint': fields.String,
34 class ResourceTypeDTO:
36 resource_type_get = api_ims_inventory_v1.model(
39 'resourceTypeId': fields.String(required=True,
40 description='Resource type ID'),
41 'name': fields.String,
42 'vendor': fields.String,
43 'version': fields.String,
44 'description': fields.String,
49 class ResourcePoolDTO:
51 resource_pool_get = api_ims_inventory_v1.model(
54 'resourcePoolId': fields.String(required=True,
55 description='Resource pool ID'),
56 'name': fields.String,
57 'globalLocationId': fields.String,
58 'location': fields.String,
59 'description': fields.String,
65 resource_list = api_ims_inventory_v1.model(
68 'resourceId': fields.String(required=True,
69 description='Resource ID'),
70 'resourceTypeId': fields.String,
71 'resourcePoolId': fields.String,
72 'name': fields.String,
73 'parentId': fields.String,
74 'description': fields.String,
78 def recursive_resource_mapping(iteration_number=2):
79 resource_json_mapping = {
80 'resourceId': fields.String(required=True,
81 description='Resource ID'),
82 'resourceTypeId': fields.String,
83 'resourcePoolId': fields.String,
84 'name': fields.String,
85 'parentId': fields.String,
86 'description': fields.String,
87 'elements': fields.String,
90 resource_json_mapping['children'] = fields.List(
91 fields.Nested(ResourceDTO.recursive_resource_mapping(
93 return api_ims_inventory_v1.model(
94 'ResourceGetDto' + str(iteration_number), resource_json_mapping)
96 # def _recursive_resource_mapping(self, iteration_number=2):
97 # resource_json_mapping = {
98 # 'resourceId': fields.String(required=True,
99 # description='Resource ID'),
100 # 'resourceTypeId': fields.String,
101 # 'resourcePoolId': fields.String,
102 # 'name': fields.String,
103 # 'parentId': fields.String,
104 # 'description': fields.String,
106 # if iteration_number:
107 # resource_json_mapping['children'] = fields.List(
108 # fields.Nested(self._recursive_resource_mapping(
109 # iteration_number-1)))
110 # # print(type(resource_json_mapping['children']))
111 # if resource_json_mapping['children'] is None:
112 # del resource_json_mapping['children']
113 # return resource_json_mapping
115 # def get_resource_get(self):
116 # return api_ims_inventory_v1.model(
119 # 'resourceId': fields.String(required=True,
120 # description='Resource ID'),
121 # 'resourceTypeId': fields.String,
122 # 'resourcePoolId': fields.String,
123 # 'name': fields.String,
124 # 'parentId': fields.String,
125 # 'description': fields.String,
126 # 'children': fields.List(fields.Nested(
127 # self._recursive_resource_mapping()))
132 class DeploymentManagerDTO:
134 deployment_manager_list = api_ims_inventory_v1.model(
135 "DeploymentManagerListDto",
137 'deploymentManagerId': fields.String(
139 description='Deployment manager ID'),
140 'name': fields.String,
141 'description': fields.String,
142 'deploymentManagementServiceEndpoint': fields.String,
143 'supportedLocations': fields.String,
144 'capabilities': fields.String,
145 'capacity': fields.String,
146 'profileSupportList': fields.List(
148 description='Profile support list, use default for the return \
153 profile = api_ims_inventory_v1.model("DeploymentManagerGetDtoProfile", {
154 'cluster_api_endpoint': fields.String(
155 attributes='cluster_api_endpoint'),
156 'cluster_ca_cert': fields.String(attributes='cluster_ca_cert'),
157 'admin_user': fields.String(attributes='admin_user'),
158 'admin_client_cert': fields.String(attributes='admin_client_cert'),
159 'admin_client_key': fields.String(attributes='admin_client_key'),
160 # 'kube_config_file': fields.String(attributes='kube_config_file')
161 'helmcli_host_with_port': fields.String(
162 attributes='helmcli_host_with_port'),
163 'helmcli_username': fields.String(attributes='helmcli_username'),
164 'helmcli_password': fields.String(attributes='helmcli_password'),
165 'helmcli_kubeconfig': fields.String(attributes='helmcli_kubeconfig'),
168 deployment_manager_get = api_ims_inventory_v1.model(
169 "DeploymentManagerGetDto",
171 'deploymentManagerId': fields.String(
173 description='Deployment manager ID'),
174 'name': fields.String,
175 'description': fields.String,
176 'deploymentManagementServiceEndpoint': fields.String,
177 'supportedLocations': fields.String,
178 'capabilities': fields.String,
179 'capacity': fields.String,
180 'profileName': fields.String,
181 'profileData': fields.Nested(profile, False, True),
186 class SubscriptionDTO:
188 subscription_get = api_ims_inventory_v1.model(
189 "SubscriptionGetDto",
191 'subscriptionId': fields.String(required=True,
192 description='Subscription ID'),
193 'callback': fields.String,
194 'consumerSubscriptionId': fields.String,
195 'filter': fields.String,
199 subscription = api_ims_inventory_v1.model(
200 "SubscriptionCreateDto",
202 'callback': fields.String(
203 required=True, description='Subscription callback address'),
204 'consumerSubscriptionId': fields.String,
205 'filter': fields.String,
209 subscription_post_resp = api_ims_inventory_v1.model(
210 "SubscriptionCreatedRespDto",
212 'subscriptionId': fields.String(required=True,
213 description='Subscription ID'),