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 as api_ims_inventory_v1
22 ocloud = api_ims_inventory_v1.model(
25 'oCloudId': fields.String(required=True),
26 'globalcloudId': fields.String(attribute='globalCloudId'),
27 'name': fields.String,
28 'description': fields.String,
29 'serviceUri': fields.String(attribute='serviceUri'),
30 # 'infrastructureManagementServiceEndpoint': fields.String(
31 # attribute='serviceUri'),
32 # 'infrastructureMangementServiceEndPoint': fields.String(
33 # attribute='serviceUri'),
34 # 'resourceTypes': fields.String,
35 # 'resourcePools': fields.String,
36 # 'deploymentManagers': fields.String,
37 # 'smoRegistrationService': fields.String
38 'extensions': fields.String
40 mask='{oCloudId,globalcloudId,name,description,serviceUri}'
44 class ResourceTypeDTO:
45 alarm_definition = api_ims_inventory_v1.model(
48 'alarmDefinitionId': fields.String,
49 'alarmName': fields.String,
50 'alarmLastChange': fields.String,
51 'alarmChangeType': fields.String,
52 'alarmDescription': fields.String,
53 'proposedRepairActions': fields.String,
54 'clearingType': fields.String,
55 'managementInterfaceId': fields.String,
56 'pkNotificationField': fields.String,
57 'alarmAdditionalFields': fields.String,
61 alarm_dictionary = api_ims_inventory_v1.model(
65 'alarmDictionaryVersion': fields.String,
66 'alarmDictionarySchemaVersion': fields.String,
67 'entityType': fields.String,
68 'vendor': fields.String,
69 'managementInterfaceId': fields.String,
70 'pkNotificationField': fields.String,
71 # 'alarmDefinition': fields.String,
72 'alarmDefinition': fields.List(fields.Nested(alarm_definition),
73 attribute='alarmDefinition'),
77 resource_type_get = api_ims_inventory_v1.model(
80 'resourceTypeId': fields.String(required=True,
81 description='Resource type ID'),
82 'name': fields.String,
83 'description': fields.String,
84 'vendor': fields.String,
85 'model': fields.String,
86 'version': fields.String,
87 'alarmDictionary': fields.Nested(alarm_dictionary, False, True),
88 # 'resourceKind': fields.String,
89 # 'resourceClass': fields.String,
90 'extensions': fields.String
92 mask='{resourceTypeId,name,description,model,vendor,version}'
96 class ResourcePoolDTO:
98 resource_pool_get = api_ims_inventory_v1.model(
101 'resourcePoolId': fields.String(required=True,
102 description='Resource pool ID'),
103 'globalLocationId': fields.String,
104 'name': fields.String,
105 'description': fields.String,
106 'oCloudId': fields.String,
107 'location': fields.String,
108 # 'resources': fields.String,
109 'extensions': fields.String
111 mask='{resourcePoolId,oCloudId,globalLocationId,name,description}'
116 resource_list = api_ims_inventory_v1.model(
119 'resourceId': fields.String(required=True,
120 description='Resource ID'),
121 'resourceTypeId': fields.String,
122 'resourcePoolId': fields.String,
123 'globalAssetId': fields.String,
124 # 'name': fields.String,
125 'parentId': fields.String,
126 'description': fields.String,
127 # 'elements': fields.String,
128 'extensions': fields.String
130 mask='{resourceId,resourcePoolId,resourceTypeId,description,parentId}'
133 def recursive_resource_mapping(iteration_number=2):
134 resource_json_mapping = {
135 'resourceId': fields.String(required=True,
136 description='Resource ID'),
137 'resourceTypeId': fields.String,
138 'resourcePoolId': fields.String,
139 'globalAssetId': fields.String,
140 # 'name': fields.String,
141 'parentId': fields.String,
142 'description': fields.String,
143 # 'elements': fields.String,
144 'extensions': fields.String
147 resource_json_mapping['elements'] = fields.List(
148 fields.Nested(ResourceDTO.recursive_resource_mapping(
149 iteration_number-1)), attribute='children')
150 return api_ims_inventory_v1.model(
151 'ResourceGetDto' + str(iteration_number), resource_json_mapping,
152 mask='{resourceId,resourcePoolId,resourceTypeId,description,' +
156 class DeploymentManagerDTO:
158 deployment_manager_list = api_ims_inventory_v1.model(
159 "DeploymentManagerListDto",
161 'deploymentManagerId': fields.String(
163 description='Deployment manager ID'),
164 'name': fields.String,
165 'description': fields.String,
166 'oCloudId': fields.String,
167 'serviceUri': fields.String(attribute='serviceUri'),
168 # 'deploymentManagementServiceEndpoint': fields.String(
169 # attribute='serviceUri'),
170 # 'supportedLocations': fields.String,
171 # 'capabilities': fields.String,
172 # 'capacity': fields.String,
173 'profileSupportList': fields.List(
175 description='Profile support list, use default for the return \
177 'extensions': fields.String
179 mask='{deploymentManagerId,name,description,oCloudId,serviceUri,' + \
180 'profileSupportList}'
183 profile = api_ims_inventory_v1.model("DeploymentManagerGetDtoProfile", {
184 'cluster_api_endpoint': fields.String(
185 attribute='cluster_api_endpoint'),
186 'cluster_ca_cert': fields.String(attribute='cluster_ca_cert'),
187 'admin_user': fields.String(attribute='admin_user'),
188 'admin_client_cert': fields.String(attribute='admin_client_cert'),
189 'admin_client_key': fields.String(attribute='admin_client_key'),
190 # 'kube_config_file': fields.String(attribute='kube_config_file')
191 'helmcli_host_with_port': fields.String(
192 attribute='helmcli_host_with_port'),
193 'helmcli_username': fields.String(attribute='helmcli_username'),
194 'helmcli_password': fields.String(attribute='helmcli_password'),
195 'helmcli_kubeconfig': fields.String(attribute='helmcli_kubeconfig'),
198 extensions = api_ims_inventory_v1.model("DeploymentManagerExtensions", {
199 'profileName': fields.String,
200 'profileData': fields.Nested(profile, False, True),
203 deployment_manager_get = api_ims_inventory_v1.model(
204 "DeploymentManagerGetDto",
206 'deploymentManagerId': fields.String(
208 description='Deployment manager ID'),
209 'name': fields.String,
210 'description': fields.String,
211 'oCloudId': fields.String,
212 'serviceUri': fields.String(attribute='serviceUri'),
213 # 'deploymentManagementServiceEndpoint': fields.String(
214 # attribute='serviceUri'),
215 # 'supportedLocations': fields.String,
216 # 'capabilities': fields.String,
217 # 'capacity': fields.String,
218 'extensions': fields.Nested(extensions, True, True)
220 mask='{deploymentManagerId,name,description,oCloudId,serviceUri,' +\
221 'extensions/profileName,extensions/profileData}'
225 class SubscriptionDTO:
227 subscription_get = api_ims_inventory_v1.model(
228 "SubscriptionGetDto",
230 'subscriptionId': fields.String(required=True,
231 description='Subscription ID'),
232 'callback': fields.String,
233 'consumerSubscriptionId': fields.String,
234 'filter': fields.String,
236 mask='{subscriptionId,callback}'
239 subscription_create = api_ims_inventory_v1.model(
240 "SubscriptionCreateDto",
242 'callback': fields.String(
243 required=True, description='Subscription callback address'),
244 'consumerSubscriptionId': fields.String,
245 'filter': fields.String,