2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.db.catalog.client;
24 import java.util.ArrayList;
25 import java.util.Iterator;
26 import java.util.List;
27 import javax.annotation.PostConstruct;
28 import javax.ws.rs.core.UriBuilder;
29 import org.onap.so.db.catalog.beans.BuildingBlockDetail;
30 import org.onap.so.db.catalog.beans.CloudSite;
31 import org.onap.so.db.catalog.beans.CloudifyManager;
32 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
33 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
34 import org.onap.so.db.catalog.beans.ControllerSelectionReference;
35 import org.onap.so.db.catalog.beans.CvnfcCustomization;
36 import org.onap.so.db.catalog.beans.ExternalServiceToInternalService;
37 import org.onap.so.db.catalog.beans.HomingInstance;
38 import org.onap.so.db.catalog.beans.InstanceGroup;
39 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
40 import org.onap.so.db.catalog.beans.NetworkRecipe;
41 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
42 import org.onap.so.db.catalog.beans.OrchestrationAction;
43 import org.onap.so.db.catalog.beans.OrchestrationStatus;
44 import org.onap.so.db.catalog.beans.OrchestrationStatusStateTransitionDirective;
45 import org.onap.so.db.catalog.beans.PnfResource;
46 import org.onap.so.db.catalog.beans.PnfResourceCustomization;
47 import org.onap.so.db.catalog.beans.ResourceType;
48 import org.onap.so.db.catalog.beans.Service;
49 import org.onap.so.db.catalog.beans.ServiceRecipe;
50 import org.onap.so.db.catalog.beans.VfModule;
51 import org.onap.so.db.catalog.beans.VfModuleCustomization;
52 import org.onap.so.db.catalog.beans.VnfComponentsRecipe;
53 import org.onap.so.db.catalog.beans.VnfRecipe;
54 import org.onap.so.db.catalog.beans.VnfResource;
55 import org.onap.so.db.catalog.beans.VnfResourceCustomization;
56 import org.onap.so.db.catalog.beans.VnfVfmoduleCvnfcConfigurationCustomization;
57 import org.onap.so.db.catalog.beans.VnfcInstanceGroupCustomization;
58 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
59 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
60 import org.onap.so.db.catalog.beans.macro.RainyDayHandlerStatus;
61 import org.onap.so.logger.LogConstants;
62 import org.onap.so.logging.jaxrs.filter.SpringClientFilter;
63 import org.springframework.beans.factory.annotation.Value;
64 import org.springframework.http.HttpHeaders;
65 import org.springframework.http.client.BufferingClientHttpRequestFactory;
66 import org.springframework.http.client.ClientHttpRequestFactory;
67 import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
68 import org.springframework.stereotype.Component;
69 import uk.co.blackpepper.bowman.Client;
70 import uk.co.blackpepper.bowman.ClientFactory;
71 import uk.co.blackpepper.bowman.Configuration;
73 @Component("CatalogDbClient")
74 public class CatalogDbClient {
76 private static final String CLOUD_SITE = "/cloudSite";
77 private static final String CLOUDIFY_MANAGER = "/cloudifyManager";
78 private static final String CVNFC_CUSTOMZIATION = "/cvnfcCustomization";
79 private static final String RAINY_DAY_HANDLER_MACRO = "/rainy_day_handler_macro";
80 private static final String NORTHBOUND_REQUEST_REF_LOOKUP = "/northbound_request_ref_lookup";
81 private static final String NETWORK_RESOURCE_CUSTOMIZATION = "/networkResourceCustomization";
82 private static final String COLLECTION_RESOURCE_INSTANCE_GROUP_CUSTOMIZATION = "/collectionResourceInstanceGroupCustomization";
83 private static final String VNFC_INSTANCE_GROUP_CUSTOMIZATION = "/vnfcInstanceGroupCustomization";
84 private static final String ORCHESTRATION_FLOW = "/orchestrationFlow";
85 private static final String ORCHESTRATION_STATUS_STATE_TRANSITION_DIRECTIVE = "/orchestrationStatusStateTransitionDirective";
86 private static final String INSTANCE_GROUP = "/instanceGroup";
87 private static final String COLLECTION_NETWORK_RESOURCE_CUSTOMIZATION = "/collectionNetworkResourceCustomization";
88 private static final String BUILDING_BLOCK_DETAIL = "/buildingBlockDetail";
89 private static final String NETWORK_COLLECTION_RESOURCE_CUSTOMIZATION = "/networkCollectionResourceCustomization";
90 private static final String VNF_RESOURCE_CUSTOMIZATION = "/vnfResourceCustomization";
91 private static final String SERVICE = "/service";
92 private static final String EXTERNAL_SERVICE_TO_INTERNAL_MODEL_MAPPING = "/externalServiceToInternalService";
93 private static final String VNF_RESOURCE = "/vnfResource";
94 private static final String VNF_RECIPE = "/vnfRecipe";
95 private static final String VFMODULE = "/vfModule";
96 private static final String VFMODULE_CUSTOMIZATION = "/vfModuleCustomization";
97 private static final String VNF_COMPONENTS_RECIPE = "/vnfComponentsRecipe";
98 private static final String SERVICE_RECIPE = "/serviceRecipe";
99 private static final String NETWORK_RECIPE = "/networkRecipe";
100 private static final String PNF_RESOURCE = "/pnfResource";
101 private static final String PNF_RESOURCE_CUSTOMIZATION = "/pnfResourceCustomization";
104 private static final String SEARCH = "/search";
105 private static final String URI_SEPARATOR = "/";
107 private static final String SERVICE_MODEL_UUID = "serviceModelUUID";
108 private static final String SERVICE_NAME = "serviceName";
109 private static final String MODEL_UUID = "modelUUID";
110 private static final String MODEL_CUSTOMIZATION_UUID = "modelCustomizationUUID";
111 private static final String ACTION = "action";
112 private static final String MODEL_NAME = "modelName";
113 private static final String MODEL_VERSION = "modelVersion";
114 private static final String MODEL_INVARIANT_UUID = "modelInvariantUUID";
115 private static final String MODEL_INSTANCE_NAME = "modelInstanceName";
116 private static final String VNF_RESOURCE_MODEL_UUID = "vnfResourceModelUUID";
117 private static final String NF_ROLE = "nfRole";
118 private static final String VF_MODULE_MODEL_UUID = "vfModuleModelUUID";
119 private static final String VNF_COMPONENT_TYPE = "vnfComponentType";
120 private static final String BUILDING_BLOCK_NAME = "buildingBlockName";
121 private static final String RESOURCE_TYPE = "resourceType";
122 private static final String ORCHESTRATION_STATUS = "orchestrationStatus";
123 private static final String TARGET_ACTION = "targetAction";
124 private static final String REQUEST_SCOPE = "requestScope";
125 private static final String IS_ALACARTE = "isALaCarte";
126 private static final String CLOUD_OWNER = "cloudOwner";
127 private static final String FLOW_NAME = "flowName";
128 private static final String SERVICE_TYPE = "serviceType";
129 private static final String VNF_TYPE = "vnfType";
130 private static final String ERROR_CODE = "errorCode";
131 private static final String WORK_STEP = "workStep";
132 private static final String CLLI = "clli";
133 private static final String CLOUD_VERSION = "cloudVersion";
134 private static final String HOMING_INSTANCE = "/homingInstance";
136 private static final String TARGET_ENTITY = "SO:CatalogDB";
137 private static final String ASTERISK = "*";
139 private String findExternalToInternalServiceByServiceName = "/findByServiceName";
140 private String findServiceByModelName = "/findOneByModelName";
141 private String findServiceRecipeByActionAndServiceModelUUID = "/findByActionAndServiceModelUUID";
142 private String findServiceByModelUUID = "/findOneByModelUUID";
143 private String findFirstByModelNameURI = "/findFirstByModelNameOrderByModelVersionDesc";
144 private String findFirstByServiceModelUUIDAndActionURI = "/findFirstByServiceModelUUIDAndAction";
145 private String findFirstByModelVersionAndModelInvariantUUIDURI = "/findFirstByModelVersionAndModelInvariantUUID";
146 private String findByModelInvariantUUIDURI = "/findByModelInvariantUUIDOrderByModelVersionDesc";
147 private String findFirstByModelNameAndAction = "/findFirstByModelNameAndAction";
148 private String findFirstResourceByModelInvariantUUIDAndModelVersion = "/findFirstResourceByModelInvariantUUIDAndModelVersion";
149 private String findByModelInstanceNameAndVnfResources = "/findByModelInstanceNameAndVnfResources";
150 private String findFirstVnfRecipeByNfRoleAndAction = "/findFirstVnfRecipeByNfRoleAndAction";
151 private String findByModelCustomizationUUIDAndVfModuleModelUUID = "/findByModelCustomizationUUIDAndVfModuleModelUUID";
152 private String findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction = "/findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction";
153 private String findFirstVnfComponentsRecipeByVnfComponentTypeAndAction = "/findFirstVnfComponentsRecipeByVnfComponentTypeAndAction";
154 private String findVfModuleByModelInvariantUUIDOrderByModelVersionDesc = "/findByModelInvariantUUIDOrderByModelVersionDesc";
155 private String findFirstVfModuleByModelInvariantUUIDAndModelVersion = "/findFirstVfModuleByModelInvariantUUIDAndModelVersion";
156 private String findOneByBuildingBlockName = "/findOneByBuildingBlockName";
157 private String findOneByResourceTypeAndOrchestrationStatusAndTargetAction = "/findOneByResourceTypeAndOrchestrationStatusAndTargetAction";
158 private String findByAction = "/findByAction";
159 private String findVnfcInstanceGroupCustomizationByModelCustomizationUUID = "/findByModelCustomizationUUID";
160 private String findCollectionResourceInstanceGroupCustomizationByModelCustomizationUUID = "/findByModelCustomizationUUID";
161 private String findOneByActionAndRequestScopeAndIsAlacarte = "/findOneByActionAndRequestScopeAndIsAlacarte";
162 private String findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwner = "/findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwner";
163 private String findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType = "/findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType";
164 private String findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep = "/findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep";
165 private String findByClliAndCloudVersion = "/findByClliAndCloudVersion";
166 private String findServiceByServiceInstanceId = "/findServiceByServiceInstanceId";
169 private String serviceURI;
170 private String vfModuleURI;
171 private String vnfResourceURI;
172 private String vfModuleCustomizationURI;
173 private String networkCollectionResourceCustomizationURI;
174 private String networkResourceCustomizationURI;
175 private String vnfResourceCustomizationURI;
176 private String collectionNetworkResourceCustomizationURI;
177 private String instanceGroupURI;
178 private String cloudifyManagerURI;
179 private String cloudSiteURI;
180 private String homingInstanceURI;
181 private String cvnfcResourceCustomizationURI;
182 private String pnfResourceURI;
183 private String pnfResourceCustomizationURI;
185 private final Client<Service> serviceClient;
187 private final Client<NetworkRecipe> networkRecipeClient;
189 private final Client<NetworkResourceCustomization> networkResourceCustomizationClient;
191 private final Client<VnfResource> vnfResourceClient;
193 private final Client<VnfResourceCustomization> vnfResourceCustomizationClient;
195 private final Client<VnfRecipe> vnfRecipeClient;
197 private final Client<VfModuleCustomization> vfModuleCustomizationClient;
199 private final Client<VfModule> vfModuleClient;
201 private final Client<VnfComponentsRecipe> vnfComponentsRecipeClient;
203 private final Client<OrchestrationFlow> orchestrationClient;
205 private final Client<NorthBoundRequest> northBoundRequestClient;
207 private final Client<RainyDayHandlerStatus> rainyDayHandlerStatusClient;
209 private final Client<BuildingBlockDetail> buildingBlockDetailClient;
211 private final Client<OrchestrationStatusStateTransitionDirective> orchestrationStatusStateTransitionDirectiveClient;
213 private final Client<VnfcInstanceGroupCustomization> vnfcInstanceGroupCustomizationClient;
215 private final Client<CollectionResourceInstanceGroupCustomization> collectionResourceInstanceGroupCustomizationClient;
217 private final Client<InstanceGroup> instanceGroupClient;
219 private final Client<NetworkCollectionResourceCustomization> networkCollectionResourceCustomizationClient;
221 private final Client<CollectionNetworkResourceCustomization> collectionNetworkResourceCustomizationClient;
223 private final Client<ServiceRecipe> serviceRecipeClient;
225 private final Client<ExternalServiceToInternalService> externalServiceToInternalServiceClient;
227 private final Client<CloudSite> cloudSiteClient;
229 private final Client<HomingInstance> homingInstanceClient;
231 private final Client<CloudifyManager> cloudifyManagerClient;
233 private final Client<CvnfcCustomization> cvnfcCustomizationClient;
235 private final Client<ControllerSelectionReference> controllerSelectionReferenceClient;
237 private final Client<PnfResource> pnfResourceClient;
239 private final Client<PnfResourceCustomization> pnfResourceCustomizationClient;
241 @Value("${mso.catalog.db.spring.endpoint:#{null}}")
242 private String endpoint;
244 @Value("${mso.db.auth:#{null}}")
245 private String msoAdaptersAuth;
250 findExternalToInternalServiceByServiceName =
251 endpoint + EXTERNAL_SERVICE_TO_INTERNAL_MODEL_MAPPING + SEARCH + findExternalToInternalServiceByServiceName;
252 findServiceByModelName = endpoint + SERVICE + SEARCH + findServiceByModelName;
253 findServiceRecipeByActionAndServiceModelUUID =
254 endpoint + SERVICE_RECIPE + SEARCH + findServiceRecipeByActionAndServiceModelUUID;
255 findServiceByModelUUID = endpoint + SERVICE + SEARCH + findServiceByModelUUID;
256 findFirstByModelNameURI = endpoint + SERVICE + SEARCH + findFirstByModelNameURI;
257 findFirstByModelVersionAndModelInvariantUUIDURI =
258 endpoint + SERVICE + SEARCH + findFirstByModelVersionAndModelInvariantUUIDURI;
259 findByModelInvariantUUIDURI = endpoint + SERVICE + SEARCH + findByModelInvariantUUIDURI;
260 findFirstByServiceModelUUIDAndActionURI =
261 endpoint + SERVICE_RECIPE + SEARCH + findFirstByServiceModelUUIDAndActionURI;
262 findFirstByModelNameAndAction = endpoint + NETWORK_RECIPE + SEARCH + findFirstByModelNameAndAction;
263 findFirstResourceByModelInvariantUUIDAndModelVersion =
264 endpoint + VNF_RESOURCE + SEARCH + findFirstResourceByModelInvariantUUIDAndModelVersion;
265 findByModelInstanceNameAndVnfResources =
266 endpoint + VNF_RESOURCE_CUSTOMIZATION + SEARCH + findByModelInstanceNameAndVnfResources;
267 findFirstVnfRecipeByNfRoleAndAction = endpoint + VNF_RECIPE + SEARCH + findFirstVnfRecipeByNfRoleAndAction;
268 findByModelCustomizationUUIDAndVfModuleModelUUID =
269 endpoint + VFMODULE_CUSTOMIZATION + SEARCH + findByModelCustomizationUUIDAndVfModuleModelUUID;
270 findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction =
271 endpoint + VNF_COMPONENTS_RECIPE + SEARCH
272 + findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction;
273 findFirstVnfComponentsRecipeByVnfComponentTypeAndAction =
274 endpoint + VNF_COMPONENTS_RECIPE + SEARCH + findFirstVnfComponentsRecipeByVnfComponentTypeAndAction;
275 findVfModuleByModelInvariantUUIDOrderByModelVersionDesc =
276 endpoint + VFMODULE + SEARCH + findVfModuleByModelInvariantUUIDOrderByModelVersionDesc;
277 findFirstVfModuleByModelInvariantUUIDAndModelVersion =
278 endpoint + VFMODULE + SEARCH + findFirstVfModuleByModelInvariantUUIDAndModelVersion;
279 findOneByBuildingBlockName = endpoint + BUILDING_BLOCK_DETAIL + SEARCH + findOneByBuildingBlockName;
280 findOneByResourceTypeAndOrchestrationStatusAndTargetAction =
281 endpoint + ORCHESTRATION_STATUS_STATE_TRANSITION_DIRECTIVE + SEARCH
282 + findOneByResourceTypeAndOrchestrationStatusAndTargetAction;
283 findByAction = endpoint + ORCHESTRATION_FLOW + SEARCH + findByAction;
284 findVnfcInstanceGroupCustomizationByModelCustomizationUUID =
285 endpoint + VNFC_INSTANCE_GROUP_CUSTOMIZATION + SEARCH
286 + findVnfcInstanceGroupCustomizationByModelCustomizationUUID;
287 findCollectionResourceInstanceGroupCustomizationByModelCustomizationUUID =
288 endpoint + COLLECTION_RESOURCE_INSTANCE_GROUP_CUSTOMIZATION + SEARCH
289 + findCollectionResourceInstanceGroupCustomizationByModelCustomizationUUID;
290 findOneByActionAndRequestScopeAndIsAlacarte =
291 endpoint + NORTHBOUND_REQUEST_REF_LOOKUP + SEARCH + findOneByActionAndRequestScopeAndIsAlacarte;
292 findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwner = endpoint + NORTHBOUND_REQUEST_REF_LOOKUP + SEARCH
293 + findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwner;
294 findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType =
295 endpoint + NORTHBOUND_REQUEST_REF_LOOKUP + SEARCH
296 + findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType;
297 findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep = endpoint + RAINY_DAY_HANDLER_MACRO + SEARCH
298 + findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep;
299 findByClliAndCloudVersion = endpoint + CLOUD_SITE + SEARCH + findByClliAndCloudVersion;
301 serviceURI = endpoint + SERVICE + URI_SEPARATOR;
302 vfModuleURI = endpoint + VFMODULE + URI_SEPARATOR;
303 vnfResourceURI = endpoint + VNF_RESOURCE + URI_SEPARATOR;
304 vfModuleCustomizationURI = endpoint + VFMODULE_CUSTOMIZATION + URI_SEPARATOR;
305 networkCollectionResourceCustomizationURI =
306 endpoint + NETWORK_COLLECTION_RESOURCE_CUSTOMIZATION + URI_SEPARATOR;
307 networkResourceCustomizationURI = endpoint + NETWORK_RESOURCE_CUSTOMIZATION + URI_SEPARATOR;
308 cvnfcResourceCustomizationURI = endpoint + CVNFC_CUSTOMZIATION + URI_SEPARATOR;
309 vnfResourceCustomizationURI = endpoint + VNF_RESOURCE_CUSTOMIZATION + URI_SEPARATOR;
310 collectionNetworkResourceCustomizationURI =
311 endpoint + COLLECTION_NETWORK_RESOURCE_CUSTOMIZATION + URI_SEPARATOR;
312 instanceGroupURI = endpoint + INSTANCE_GROUP + URI_SEPARATOR;
313 cloudifyManagerURI = endpoint + CLOUDIFY_MANAGER + URI_SEPARATOR;
314 cloudSiteURI = endpoint + CLOUD_SITE + URI_SEPARATOR;
315 homingInstanceURI = endpoint + HOMING_INSTANCE + URI_SEPARATOR;
316 pnfResourceURI = endpoint + PNF_RESOURCE + URI_SEPARATOR;
317 pnfResourceCustomizationURI = endpoint + PNF_RESOURCE_CUSTOMIZATION + URI_SEPARATOR;
321 public CatalogDbClient() {
322 ClientHttpRequestFactory factory = new BufferingClientHttpRequestFactory(
323 new HttpComponentsClientHttpRequestFactory());
325 ClientFactory clientFactory = Configuration.builder().setClientHttpRequestFactory(factory)
326 .setRestTemplateConfigurer(restTemplate -> {
327 restTemplate.getInterceptors().add((new SpringClientFilter()));
329 restTemplate.getInterceptors().add((request, body, execution) -> {
331 request.getHeaders().add(HttpHeaders.AUTHORIZATION, msoAdaptersAuth);
332 request.getHeaders().add(LogConstants.TARGET_ENTITY_HEADER, TARGET_ENTITY);
333 return execution.execute(request, body);
335 }).build().buildClientFactory();
336 serviceClient = clientFactory.create(Service.class);
337 networkRecipeClient = clientFactory.create(NetworkRecipe.class);
338 networkResourceCustomizationClient = clientFactory.create(NetworkResourceCustomization.class);
339 vnfResourceClient = clientFactory.create(VnfResource.class);
340 vnfResourceCustomizationClient = clientFactory.create(VnfResourceCustomization.class);
341 vnfRecipeClient = clientFactory.create(VnfRecipe.class);
342 orchestrationClient = clientFactory.create(OrchestrationFlow.class);
343 vfModuleCustomizationClient = clientFactory.create(VfModuleCustomization.class);
344 vfModuleClient = clientFactory.create(VfModule.class);
345 vnfComponentsRecipeClient = clientFactory.create(VnfComponentsRecipe.class);
346 northBoundRequestClient = clientFactory.create(NorthBoundRequest.class);
347 rainyDayHandlerStatusClient = clientFactory.create(RainyDayHandlerStatus.class);
348 buildingBlockDetailClient = clientFactory.create(BuildingBlockDetail.class);
349 orchestrationStatusStateTransitionDirectiveClient = clientFactory
350 .create(OrchestrationStatusStateTransitionDirective.class);
351 vnfcInstanceGroupCustomizationClient = clientFactory.create(VnfcInstanceGroupCustomization.class);
352 collectionResourceInstanceGroupCustomizationClient = clientFactory
353 .create(CollectionResourceInstanceGroupCustomization.class);
354 instanceGroupClient = clientFactory.create(InstanceGroup.class);
355 networkCollectionResourceCustomizationClient = clientFactory
356 .create(NetworkCollectionResourceCustomization.class);
357 collectionNetworkResourceCustomizationClient = clientFactory
358 .create(CollectionNetworkResourceCustomization.class);
359 cloudSiteClient = clientFactory.create(CloudSite.class);
360 homingInstanceClient = clientFactory.create(HomingInstance.class);
361 cloudifyManagerClient = clientFactory.create(CloudifyManager.class);
362 serviceRecipeClient = clientFactory.create(ServiceRecipe.class);
363 cvnfcCustomizationClient = clientFactory.create(CvnfcCustomization.class);
364 controllerSelectionReferenceClient = clientFactory.create(ControllerSelectionReference.class);
365 externalServiceToInternalServiceClient = clientFactory.create(ExternalServiceToInternalService.class);
366 pnfResourceClient = clientFactory.create(PnfResource.class);
367 pnfResourceCustomizationClient = clientFactory.create(PnfResourceCustomization.class);
370 public CatalogDbClient(String baseUri, String auth) {
371 ClientHttpRequestFactory factory = new BufferingClientHttpRequestFactory(
372 new HttpComponentsClientHttpRequestFactory());
374 ClientFactory clientFactory = Configuration.builder().setBaseUri(baseUri).setClientHttpRequestFactory(factory)
375 .setRestTemplateConfigurer(restTemplate -> {
376 restTemplate.getInterceptors().add((new SpringClientFilter()));
378 restTemplate.getInterceptors().add((request, body, execution) -> {
380 request.getHeaders().add(HttpHeaders.AUTHORIZATION, auth);
381 request.getHeaders().add(LogConstants.TARGET_ENTITY_HEADER, TARGET_ENTITY);
382 return execution.execute(request, body);
384 }).build().buildClientFactory();
385 serviceClient = clientFactory.create(Service.class);
386 networkRecipeClient = clientFactory.create(NetworkRecipe.class);
387 networkResourceCustomizationClient = clientFactory.create(NetworkResourceCustomization.class);
388 vnfResourceClient = clientFactory.create(VnfResource.class);
389 vnfResourceCustomizationClient = clientFactory.create(VnfResourceCustomization.class);
390 vnfRecipeClient = clientFactory.create(VnfRecipe.class);
391 orchestrationClient = clientFactory.create(OrchestrationFlow.class);
392 vfModuleCustomizationClient = clientFactory.create(VfModuleCustomization.class);
393 vfModuleClient = clientFactory.create(VfModule.class);
394 vnfComponentsRecipeClient = clientFactory.create(VnfComponentsRecipe.class);
395 northBoundRequestClient = clientFactory.create(NorthBoundRequest.class);
396 rainyDayHandlerStatusClient = clientFactory.create(RainyDayHandlerStatus.class);
397 buildingBlockDetailClient = clientFactory.create(BuildingBlockDetail.class);
398 orchestrationStatusStateTransitionDirectiveClient = clientFactory
399 .create(OrchestrationStatusStateTransitionDirective.class);
400 vnfcInstanceGroupCustomizationClient = clientFactory.create(VnfcInstanceGroupCustomization.class);
401 collectionResourceInstanceGroupCustomizationClient = clientFactory
402 .create(CollectionResourceInstanceGroupCustomization.class);
403 instanceGroupClient = clientFactory.create(InstanceGroup.class);
404 networkCollectionResourceCustomizationClient = clientFactory
405 .create(NetworkCollectionResourceCustomization.class);
406 collectionNetworkResourceCustomizationClient = clientFactory
407 .create(CollectionNetworkResourceCustomization.class);
408 cloudSiteClient = clientFactory.create(CloudSite.class);
409 homingInstanceClient = clientFactory.create(HomingInstance.class);
410 cloudifyManagerClient = clientFactory.create(CloudifyManager.class);
411 serviceRecipeClient = clientFactory.create(ServiceRecipe.class);
412 cvnfcCustomizationClient = clientFactory.create(CvnfcCustomization.class);
413 controllerSelectionReferenceClient = clientFactory.create(ControllerSelectionReference.class);
414 externalServiceToInternalServiceClient = clientFactory.create(ExternalServiceToInternalService.class);
415 pnfResourceClient = clientFactory.create(PnfResource.class);
416 pnfResourceCustomizationClient = clientFactory.create(PnfResourceCustomization.class);
419 public NetworkCollectionResourceCustomization getNetworkCollectionResourceCustomizationByID(
420 String modelCustomizationUUID) {
421 NetworkCollectionResourceCustomization networkCollectionResourceCustomization =
422 this.getSingleResource(networkCollectionResourceCustomizationClient,
423 getUri(networkCollectionResourceCustomizationURI + modelCustomizationUUID));
424 if (networkCollectionResourceCustomization != null) {
425 networkCollectionResourceCustomization.setModelCustomizationUUID(modelCustomizationUUID);
427 return networkCollectionResourceCustomization;
430 public Service getServiceByID(String modelUUID) {
431 Service service = getSingleResource(serviceClient, getUri(serviceURI + modelUUID));
432 if (service != null) {
433 service.setModelUUID(modelUUID);
438 public VfModule getVfModuleByModelUUID(String modelUUID) {
439 VfModule vfModule = getSingleResource(vfModuleClient, getUri(vfModuleURI + modelUUID));
440 if (vfModule != null) {
441 vfModule.setModelUUID(modelUUID);
446 public VnfResource getVnfResourceByModelUUID(String modelUUID) {
448 VnfResource vnfResource = this.getSingleResource(vnfResourceClient, getUri(vnfResourceURI + modelUUID));
449 if (vnfResource != null) {
450 vnfResource.setModelUUID(modelUUID);
455 public VnfResourceCustomization getVnfResourceCustomizationByModelCustomizationUUID(String modelCustomizationUUID) {
456 VnfResourceCustomization vnfResourceCustomization = getSingleResource(vnfResourceCustomizationClient,
457 getUri(vnfResourceCustomizationURI + modelCustomizationUUID));
458 if (vnfResourceCustomization != null) {
459 vnfResourceCustomization.setModelCustomizationUUID(modelCustomizationUUID);
461 return vnfResourceCustomization;
464 public PnfResource getPnfResourceByModelUUID(String modelUUID) {
465 PnfResource PnfResource = this.getSingleResource(pnfResourceClient, getUri(pnfResourceURI + modelUUID));
466 if (PnfResource != null) {
467 PnfResource.setModelUUID(modelUUID);
472 public PnfResourceCustomization getPnfResourceCustomizationByModelCustomizationUUID(String modelCustomizationUUID) {
473 PnfResourceCustomization pnfResourceCustomization = getSingleResource(pnfResourceCustomizationClient,
474 getUri(pnfResourceCustomizationURI + modelCustomizationUUID));
475 if (pnfResourceCustomization != null) {
476 pnfResourceCustomization.setModelCustomizationUUID(modelCustomizationUUID);
478 return pnfResourceCustomization;
481 public CollectionNetworkResourceCustomization getCollectionNetworkResourceCustomizationByID(
482 String modelCustomizationUUID) {
483 CollectionNetworkResourceCustomization collectionNetworkResourceCustomization =
484 this.getSingleResource(collectionNetworkResourceCustomizationClient, getUri(UriBuilder
485 .fromUri(collectionNetworkResourceCustomizationURI + modelCustomizationUUID).build().toString()));
486 if (collectionNetworkResourceCustomization != null) {
487 collectionNetworkResourceCustomization.setModelCustomizationUUID(modelCustomizationUUID);
489 return collectionNetworkResourceCustomization;
492 public InstanceGroup getInstanceGroupByModelUUID(String modelUUID) {
493 InstanceGroup instanceGroup = this.getSingleResource(instanceGroupClient, getUri(instanceGroupURI + modelUUID));
494 if (instanceGroup != null) {
495 instanceGroup.setModelUUID(modelUUID);
497 return instanceGroup;
500 public VfModuleCustomization getVfModuleCustomizationByModelCuztomizationUUID(String modelCustomizationUUID) {
501 VfModuleCustomization vfModuleCust = this
502 .getSingleResource(vfModuleCustomizationClient, getUri(vfModuleCustomizationURI + modelCustomizationUUID));
503 if (vfModuleCust != null) {
504 vfModuleCust.setModelCustomizationUUID(modelCustomizationUUID);
509 public NetworkResourceCustomization getNetworkResourceCustomizationByModelCustomizationUUID(
510 String modelCustomizationUUID) {
511 NetworkResourceCustomization networkResourceCustomization =
512 this.getSingleResource(networkResourceCustomizationClient,
513 getUri(networkResourceCustomizationURI + modelCustomizationUUID));
514 if (networkResourceCustomization != null) {
515 networkResourceCustomization.setModelCustomizationUUID(modelCustomizationUUID);
517 return networkResourceCustomization;
520 public CvnfcCustomization getCvnfcCustomizationByModelCustomizationUUID(String modelCustomizationUUID){
521 CvnfcCustomization cvnfcResourceCustomization =
522 this.getSingleResource(cvnfcCustomizationClient, getUri(cvnfcResourceCustomizationURI + modelCustomizationUUID));
523 if (cvnfcResourceCustomization != null) {
524 cvnfcResourceCustomization.setModelCustomizationUUID(modelCustomizationUUID);
526 return cvnfcResourceCustomization;
529 public BuildingBlockDetail getBuildingBlockDetail(String buildingBlockName) {
530 BuildingBlockDetail buildingBlockDetail = getSingleResource(buildingBlockDetailClient, getUri(UriBuilder
531 .fromUri(findOneByBuildingBlockName).queryParam(BUILDING_BLOCK_NAME, buildingBlockName).build()
533 if (buildingBlockDetail != null) {
534 buildingBlockDetail.setBuildingBlockName(buildingBlockName);
536 return buildingBlockDetail;
540 public OrchestrationStatusStateTransitionDirective getOrchestrationStatusStateTransitionDirective(
541 ResourceType resourceType, OrchestrationStatus orchestrationStatus, OrchestrationAction targetAction) {
542 return getSingleResource(orchestrationStatusStateTransitionDirectiveClient, UriBuilder
543 .fromUri(findOneByResourceTypeAndOrchestrationStatusAndTargetAction)
544 .queryParam(RESOURCE_TYPE, resourceType.name())
545 .queryParam(ORCHESTRATION_STATUS, orchestrationStatus.name())
546 .queryParam(TARGET_ACTION, targetAction.name()).build());
549 public List<OrchestrationFlow> getOrchestrationFlowByAction(String action) {
550 return this.getMultipleResources(orchestrationClient, UriBuilder
551 .fromUri(findByAction).queryParam(ACTION, action).build());
554 public List<VnfcInstanceGroupCustomization> getVnfcInstanceGroupsByVnfResourceCust(String modelCustomizationUUID) {
555 return this.getMultipleResources(vnfcInstanceGroupCustomizationClient, UriBuilder
556 .fromUri(findVnfcInstanceGroupCustomizationByModelCustomizationUUID)
557 .queryParam(MODEL_CUSTOMIZATION_UUID, modelCustomizationUUID).build());
560 public List<CollectionResourceInstanceGroupCustomization> getCollectionResourceInstanceGroupCustomizationByModelCustUUID(
561 String modelCustomizationUUID) {
562 return this.getMultipleResources(collectionResourceInstanceGroupCustomizationClient, UriBuilder
563 .fromUri(findCollectionResourceInstanceGroupCustomizationByModelCustomizationUUID)
564 .queryParam(MODEL_CUSTOMIZATION_UUID, modelCustomizationUUID).build());
567 public VfModuleCustomization getVfModuleCustomizationByModelCustomizationUUIDAndVfModuleModelUUID(
568 String modelCustomizationUUID, String vfModuleModelUUID) {
569 return this.getSingleResource(vfModuleCustomizationClient, getUri(UriBuilder
570 .fromUri(findByModelCustomizationUUIDAndVfModuleModelUUID)
571 .queryParam(MODEL_CUSTOMIZATION_UUID, modelCustomizationUUID)
572 .queryParam(VF_MODULE_MODEL_UUID, vfModuleModelUUID).build().toString()));
575 public NorthBoundRequest getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(String requestAction,
576 String resourceName, boolean aLaCarte) {
577 return this.getSingleResource(northBoundRequestClient, UriBuilder
578 .fromUri(findOneByActionAndRequestScopeAndIsAlacarte)
579 .queryParam(ACTION, requestAction).queryParam(REQUEST_SCOPE, resourceName)
580 .queryParam(IS_ALACARTE, aLaCarte).build());
583 public NorthBoundRequest getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(String requestAction,
584 String resourceName, boolean aLaCarte, String cloudOwner) {
585 return this.getSingleResource(northBoundRequestClient, getUri(UriBuilder
586 .fromUri(findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType)
587 .queryParam(ACTION, requestAction).queryParam(REQUEST_SCOPE, resourceName)
588 .queryParam(IS_ALACARTE, aLaCarte)
589 .queryParam(CLOUD_OWNER, cloudOwner)
590 .queryParam(SERVICE_TYPE, ASTERISK).build().toString()));
593 public NorthBoundRequest getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
594 String requestAction,
595 String resourceName, boolean aLaCarte, String cloudOwner, String serviceType) {
596 return this.getSingleResource(northBoundRequestClient, getUri(UriBuilder
597 .fromUri(findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType)
598 .queryParam(ACTION, requestAction).queryParam(REQUEST_SCOPE, resourceName)
599 .queryParam(IS_ALACARTE, aLaCarte)
600 .queryParam(CLOUD_OWNER, cloudOwner)
601 .queryParam(SERVICE_TYPE, serviceType).build().toString()));
604 public RainyDayHandlerStatus getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(
605 String flowName, String serviceType, String vnfType, String errorCode, String workStep) {
606 return this.getSingleResource(rainyDayHandlerStatusClient, getUri(UriBuilder
607 .fromUri(findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep)
608 .queryParam(FLOW_NAME, flowName).queryParam(SERVICE_TYPE, serviceType)
609 .queryParam(VNF_TYPE, vnfType).queryParam(ERROR_CODE, errorCode).queryParam(WORK_STEP, workStep)
610 .build().toString()));
613 public ServiceRecipe getFirstByServiceModelUUIDAndAction(String modelUUID, String action) {
614 return this.getSingleResource(serviceRecipeClient, getUri(UriBuilder
615 .fromUri(findFirstByServiceModelUUIDAndActionURI)
616 .queryParam(SERVICE_MODEL_UUID, modelUUID)
617 .queryParam(ACTION, action).build().toString()));
620 public NetworkRecipe getFirstNetworkRecipeByModelNameAndAction(String modelName, String action) {
621 return this.getSingleResource(networkRecipeClient, UriBuilder
622 .fromUri(findFirstByModelNameAndAction)
623 .queryParam(MODEL_NAME, modelName)
624 .queryParam(ACTION, action).build());
627 public ControllerSelectionReference getControllerSelectionReferenceByVnfTypeAndActionCategory(String vnfType,
628 String actionCategory) {
629 return this.getSingleResource(controllerSelectionReferenceClient, UriBuilder
631 + "/controllerSelectionReference/search/findControllerSelectionReferenceByVnfTypeAndActionCategory")
632 .queryParam("VNF_TYPE", vnfType).queryParam("ACTION_CATEGORY", actionCategory).build());
635 public Service getFirstByModelNameOrderByModelVersionDesc(String modelName) {
636 return this.getSingleResource(serviceClient, UriBuilder
637 .fromUri(findFirstByModelNameURI)
638 .queryParam(MODEL_NAME, modelName).build());
641 public ExternalServiceToInternalService findExternalToInternalServiceByServiceName(String serviceName) {
642 return this.getSingleResource(externalServiceToInternalServiceClient, getUri(UriBuilder
643 .fromUri(findExternalToInternalServiceByServiceName)
644 .queryParam(SERVICE_NAME, serviceName).build().toString()));
647 public ServiceRecipe findServiceRecipeByActionAndServiceModelUUID(String action, String modelUUID) {
648 return this.getSingleResource(serviceRecipeClient, getUri(UriBuilder
649 .fromUri(findServiceRecipeByActionAndServiceModelUUID)
650 .queryParam(ACTION, action)
651 .queryParam(SERVICE_MODEL_UUID, modelUUID).build().toString()));
654 public Service getServiceByModelName(String modelName) {
655 return this.getSingleResource(serviceClient, getUri(UriBuilder
656 .fromUri(findServiceByModelName)
657 .queryParam(MODEL_NAME, modelName).build().toString()));
660 public Service getServiceByModelUUID(String modelModelUUID) {
661 return this.getSingleResource(serviceClient, getUri(UriBuilder
662 .fromUri(findServiceByModelUUID)
663 .queryParam(MODEL_UUID, modelModelUUID).build().toString()));
666 public VnfResource getFirstVnfResourceByModelInvariantUUIDAndModelVersion(String modelInvariantUUID,
667 String modelVersion) {
668 return this.getSingleResource(vnfResourceClient, getUri(UriBuilder
669 .fromUri(findFirstResourceByModelInvariantUUIDAndModelVersion)
670 .queryParam(MODEL_INVARIANT_UUID, modelInvariantUUID)
671 .queryParam(MODEL_VERSION, modelVersion).build().toString()));
675 public VnfResourceCustomization getFirstVnfResourceCustomizationByModelInstanceNameAndVnfResources(
676 String modelInstanceName, VnfResource vnfResource) {
677 return this.getSingleResource(vnfResourceCustomizationClient, getUri(UriBuilder
678 .fromUri(findByModelInstanceNameAndVnfResources)
679 .queryParam(MODEL_INSTANCE_NAME, modelInstanceName)
680 .queryParam(VNF_RESOURCE_MODEL_UUID, vnfResource.getModelUUID()).build().toString()));
683 public VnfRecipe getFirstVnfRecipeByNfRoleAndAction(String nfRole, String action) {
684 return this.getSingleResource(vnfRecipeClient, getUri(UriBuilder
685 .fromUri(findFirstVnfRecipeByNfRoleAndAction)
686 .queryParam(NF_ROLE, nfRole)
687 .queryParam(ACTION, action).build().toString()));
690 public VnfComponentsRecipe getFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction(
691 String vfModuleModelUUID, String vnfComponentType, String action) {
692 return this.getSingleResource(vnfComponentsRecipeClient, getUri(UriBuilder
693 .fromUri(findFirstVnfComponentsRecipeByVfModuleModelUUIDAndVnfComponentTypeAndAction)
694 .queryParam(VF_MODULE_MODEL_UUID, vfModuleModelUUID)
695 .queryParam(VNF_COMPONENT_TYPE, vnfComponentType)
696 .queryParam(ACTION, action).build().toString()));
699 public VnfComponentsRecipe getFirstVnfComponentsRecipeByVnfComponentTypeAndAction(String vnfComponentType,
701 return this.getSingleResource(vnfComponentsRecipeClient, getUri(UriBuilder
702 .fromUri(findFirstVnfComponentsRecipeByVnfComponentTypeAndAction)
703 .queryParam(VNF_COMPONENT_TYPE, vnfComponentType)
704 .queryParam(ACTION, action).build().toString()));
707 protected URI getUri(String template) {
708 return URI.create(template);
711 public CloudifyManager getCloudifyManager(String id) {
712 return this.getSingleResource(cloudifyManagerClient, getUri(cloudifyManagerURI + id));
715 public CloudSite getCloudSite(String id) {
716 return this.getSingleResource(cloudSiteClient,
717 getUri(cloudSiteURI + id));
720 public CloudSite getCloudSite(String id, String uri) {
721 return this.getSingleResource(cloudSiteClient,
725 public void postCloudSite(CloudSite cloudSite) {
726 this.postSingleResource(cloudSiteClient, cloudSite);
729 public CloudSite getCloudSiteByClliAndAicVersion(String clli, String cloudVersion) {
730 return this.getSingleResource(cloudSiteClient, getUri(UriBuilder
731 .fromUri(findByClliAndCloudVersion)
732 .queryParam(CLLI, clli).queryParam(CLOUD_VERSION, cloudVersion).build().toString()));
735 public HomingInstance getHomingInstance(String serviceInstanceId) {
736 return this.getSingleResource(homingInstanceClient,
737 getUri(homingInstanceURI + serviceInstanceId));
740 public HomingInstance getHomingInstance(String serviceInstanceId, String uri) {
741 return this.getSingleResource(homingInstanceClient,
742 getUri(uri + serviceInstanceId));
745 public void postHomingInstance(HomingInstance homingInstance) {
746 this.postSingleResource(homingInstanceClient, homingInstance);
749 public Service getServiceByModelVersionAndModelInvariantUUID(String modelVersion, String modelInvariantUUID) {
750 return this.getSingleResource(serviceClient, getUri(UriBuilder
751 .fromUri(findFirstByModelVersionAndModelInvariantUUIDURI)
752 .queryParam(MODEL_VERSION, modelVersion)
753 .queryParam(MODEL_INVARIANT_UUID, modelInvariantUUID).build().toString()));
756 public VfModule getVfModuleByModelInvariantUUIDAndModelVersion(String modelInvariantUUID, String modelVersion) {
757 return this.getSingleResource(vfModuleClient, getUri(UriBuilder
758 .fromUri(findFirstVfModuleByModelInvariantUUIDAndModelVersion)
759 .queryParam(MODEL_INVARIANT_UUID, modelInvariantUUID)
760 .queryParam(MODEL_VERSION, modelVersion).build().toString()));
763 public List<Service> getServiceByModelInvariantUUIDOrderByModelVersionDesc(String modelInvariantUUID) {
764 return this.getMultipleResources(serviceClient, getUri(UriBuilder
765 .fromUri(findByModelInvariantUUIDURI)
766 .queryParam(MODEL_INVARIANT_UUID, modelInvariantUUID).build().toString()));
769 public List<VfModule> getVfModuleByModelInvariantUUIDOrderByModelVersionDesc(String modelInvariantUUID) {
770 return this.getMultipleResources(vfModuleClient, getUri(UriBuilder
771 .fromUri(findVfModuleByModelInvariantUUIDOrderByModelVersionDesc)
772 .queryParam(MODEL_INVARIANT_UUID, modelInvariantUUID).build().toString()));
775 private <T> T getSingleResource(Client<T> client, URI uri) {
776 return client.get(uri);
779 private <T> List<T> getMultipleResources(Client<T> client, URI uri) {
780 Iterable<T> iterator = client.getAll(uri);
781 List<T> list = new ArrayList<>();
782 Iterator<T> it = iterator.iterator();
783 it.forEachRemaining(list::add);
787 private <T> URI postSingleResource(Client<T> client, T type) {
788 return client.post(type);
791 public List<CvnfcCustomization> getCvnfcCustomizationByVnfCustomizationUUIDAndVfModuleCustomizationUUID(
792 String vnfCustomizationUUID, String vfModuleCustomizationUUID) {
794 return this.getMultipleResources(cvnfcCustomizationClient, getUri(UriBuilder
795 .fromUri(endpoint + "/cvnfcCustomization/search/findByVnfResourceCustomizationAndVfModuleCustomization")
796 .queryParam("VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID", vnfCustomizationUUID)
797 .queryParam("VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID", vfModuleCustomizationUUID).build().toString()));
800 public CvnfcCustomization getCvnfcCustomizationByCustomizationUUID(String cvnfcCustomizationUuid){
801 return this.getSingleResource(cvnfcCustomizationClient,getUri(UriBuilder
802 .fromUri(endpoint + "/cvnfcCustomization/search/findOneByModelCustomizationUUID").queryParam("modelCustomizationUuid", cvnfcCustomizationUuid)
803 .build().toString()));
806 //fetch all VnfVfmoduleCvnfcConfigurationCustomization underneath a vnfc
807 //find the VnfVfmoduleCvnfcConfigurationCustomization that is related to our vnf and our vf-module, filter all others.
808 public VnfVfmoduleCvnfcConfigurationCustomization getVnfVfmoduleCvnfcConfigurationCustomizationByVnfCustomizationUuidAndVfModuleCustomizationUuidAndCvnfcCustomizationUuid(
809 String vnfCustomizationUuid, String vfModuleCustomizationUuid, String cvnfcCustomizationUuid) {
810 CvnfcCustomization cvnfc = getCvnfcCustomizationByCustomizationUUID(cvnfcCustomizationUuid);
811 for(VnfVfmoduleCvnfcConfigurationCustomization vnfVfModuleCvnfcCust: cvnfc.getVnfVfmoduleCvnfcConfigurationCustomization()){
812 if(vnfVfModuleCvnfcCust.getVnfResourceCustomization().getModelCustomizationUUID().equals(vnfCustomizationUuid) &&
813 vnfVfModuleCvnfcCust.getVfModuleCustomization().getModelCustomizationUUID().equals(vfModuleCustomizationUuid)){
814 return vnfVfModuleCvnfcCust;