2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2019 Samsung
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.so.bpmn.servicedecomposition.tasks;
25 import java.io.IOException;
26 import java.util.ArrayList;
27 import java.util.Arrays;
28 import java.util.List;
30 import java.util.Optional;
31 import org.onap.aai.domain.yang.CloudRegion;
32 import org.onap.aai.domain.yang.Configuration;
33 import org.onap.aai.domain.yang.Configurations;
34 import org.onap.aai.domain.yang.GenericVnf;
35 import org.onap.aai.domain.yang.GenericVnfs;
36 import org.onap.aai.domain.yang.InstanceGroup;
37 import org.onap.aai.domain.yang.L3Network;
38 import org.onap.aai.domain.yang.L3Networks;
39 import org.onap.aai.domain.yang.ServiceInstance;
40 import org.onap.aai.domain.yang.ServiceInstances;
41 import org.onap.aai.domain.yang.ServiceSubscription;
42 import org.onap.aai.domain.yang.VfModule;
43 import org.onap.aai.domain.yang.VolumeGroup;
44 import org.onap.aai.domain.yang.VolumeGroups;
45 import org.onap.aai.domain.yang.VpnBinding;
46 import org.onap.so.bpmn.common.InjectionHelper;
47 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
48 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
49 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.MultipleObjectsFoundException;
50 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.NoServiceInstanceFoundException;
51 import org.onap.aaiclient.client.aai.AAIObjectPlurals;
52 import org.onap.aaiclient.client.aai.AAIObjectType;
53 import org.onap.aaiclient.client.aai.AAIResourcesClient;
54 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
55 import org.onap.aaiclient.client.aai.entities.uri.AAIPluralResourceUri;
56 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
57 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
58 import org.onap.aaiclient.client.graphinventory.entities.uri.Depth;
59 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
60 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
61 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
62 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
63 import org.onap.so.db.catalog.beans.Service;
64 import org.onap.so.db.catalog.beans.VfModuleCustomization;
65 import org.onap.so.db.catalog.beans.VnfcInstanceGroupCustomization;
66 import org.onap.so.db.catalog.client.CatalogDbClient;
67 import org.onap.so.db.request.beans.InfraActiveRequests;
68 import org.onap.so.db.request.beans.RequestProcessingData;
69 import org.onap.so.db.request.client.RequestsDbClient;
70 import org.onap.so.serviceinstancebeans.CloudConfiguration;
71 import org.onap.so.serviceinstancebeans.ModelType;
72 import org.onap.so.serviceinstancebeans.RelatedInstance;
73 import org.onap.so.serviceinstancebeans.RelatedInstanceList;
74 import org.onap.so.serviceinstancebeans.RequestDetails;
75 import org.slf4j.Logger;
76 import org.slf4j.LoggerFactory;
77 import org.springframework.beans.factory.annotation.Autowired;
78 import org.springframework.stereotype.Component;
79 import com.fasterxml.jackson.core.JsonProcessingException;
80 import com.fasterxml.jackson.databind.DeserializationFeature;
81 import com.fasterxml.jackson.databind.ObjectMapper;
82 import com.fasterxml.jackson.databind.SerializationFeature;
83 import com.fasterxml.jackson.databind.type.TypeFactory;
85 @Component("BBInputSetupUtils")
86 public class BBInputSetupUtils {
88 private static final Logger logger = LoggerFactory.getLogger(BBInputSetupUtils.class);
89 private static final String REQUEST_ERROR = "Could not find request.";
90 private static final String DATA_LOAD_ERROR = "Could not process loading data from database";
91 private static final String DATA_PARSE_ERROR = "Could not parse data";
92 private static final String PROCESSING_DATA_NAME_EXECUTION_FLOWS = "flowExecutionPath";
95 protected CatalogDbClient catalogDbClient;
98 protected RequestsDbClient requestsDbClient;
101 protected InjectionHelper injectionHelper;
103 public RelatedInstance getRelatedInstanceByType(RequestDetails requestDetails, ModelType modelType) {
104 if (requestDetails.getRelatedInstanceList() != null) {
105 for (RelatedInstanceList relatedInstanceList : requestDetails.getRelatedInstanceList()) {
106 RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
107 if (relatedInstance != null && relatedInstance.getModelInfo() != null
108 && relatedInstance.getModelInfo().getModelType() != null
109 && relatedInstance.getModelInfo().getModelType().equals(modelType)) {
110 return relatedInstance;
117 public void updateInfraActiveRequestVnfId(InfraActiveRequests request, String vnfId) {
118 if (request != null) {
119 request.setVnfId(vnfId);
120 this.requestsDbClient.updateInfraActiveRequests(request);
122 logger.debug(REQUEST_ERROR);
126 public void updateInfraActiveRequestVfModuleId(InfraActiveRequests request, String vfModuleId) {
127 if (request != null) {
128 request.setVfModuleId(vfModuleId);
129 this.requestsDbClient.updateInfraActiveRequests(request);
131 logger.debug(REQUEST_ERROR);
135 public void updateInfraActiveRequestVolumeGroupId(InfraActiveRequests request, String volumeGroupId) {
136 if (request != null) {
137 request.setVolumeGroupId(volumeGroupId);
138 this.requestsDbClient.updateInfraActiveRequests(request);
140 logger.debug(REQUEST_ERROR);
144 public void updateInfraActiveRequestNetworkId(InfraActiveRequests request, String networkId) {
145 if (request != null) {
146 request.setNetworkId(networkId);
147 this.requestsDbClient.updateInfraActiveRequests(request);
149 logger.debug(REQUEST_ERROR);
153 public void persistFlowExecutionPath(String requestId, List<ExecuteBuildingBlock> flowsToExecute) {
155 if (requestId != null) {
156 List<String> flows = new ArrayList<>();
157 ObjectMapper om = new ObjectMapper();
159 for (ExecuteBuildingBlock ebb : flowsToExecute) {
160 flows.add(om.writeValueAsString(ebb));
162 } catch (JsonProcessingException e) {
163 logger.error(DATA_PARSE_ERROR, e);
166 this.requestsDbClient.persistProcessingData(flows.toString(), requestId);
168 logger.debug(REQUEST_ERROR);
172 public InfraActiveRequests loadInfraActiveRequestById(String requestId) {
174 return this.requestsDbClient.getInfraActiveRequestbyRequestId(requestId);
177 public InfraActiveRequests loadOriginalInfraActiveRequestById(String requestId) {
178 return this.requestsDbClient.getInfraActiveRequestbyRequestId(
179 this.requestsDbClient.getInfraActiveRequestbyRequestId(requestId).getOriginalRequestId());
182 public List<ExecuteBuildingBlock> loadOriginalFlowExecutionPath(String requestId) {
183 if (requestId != null) {
184 InfraActiveRequests request = loadInfraActiveRequestById(requestId);
185 if (request.getOriginalRequestId() != null) {
186 RequestProcessingData requestProcessingData =
187 this.requestsDbClient.getRequestProcessingDataBySoRequestIdAndName(
188 request.getOriginalRequestId(), PROCESSING_DATA_NAME_EXECUTION_FLOWS);
190 ObjectMapper om = new ObjectMapper();
191 TypeFactory typeFactory = om.getTypeFactory();
192 om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
193 return om.readValue(requestProcessingData.getValue(),
194 typeFactory.constructCollectionType(List.class, ExecuteBuildingBlock.class));
195 } catch (Exception e) {
196 logger.error(DATA_LOAD_ERROR, e);
197 throw new RuntimeException("Error Loading Original Request Data", e);
200 throw new RuntimeException("Original Request Id is null for record: " + requestId);
203 throw new RuntimeException("Null Request Id Passed in");
207 public Service getCatalogServiceByModelUUID(String modelUUID) {
208 return catalogDbClient.getServiceByID(modelUUID);
211 public Service getCatalogServiceByModelVersionAndModelInvariantUUID(String modelVersion,
212 String modelInvariantUUID) {
213 return catalogDbClient.getServiceByModelVersionAndModelInvariantUUID(modelVersion, modelInvariantUUID);
216 public CollectionNetworkResourceCustomization getCatalogCollectionNetworkResourceCustByID(String key) {
217 return catalogDbClient.getCollectionNetworkResourceCustomizationByID(key);
220 public NetworkCollectionResourceCustomization getCatalogNetworkCollectionResourceCustByID(
221 String collectionCustomizationId) {
222 return catalogDbClient.getNetworkCollectionResourceCustomizationByID(collectionCustomizationId);
225 public VfModuleCustomization getVfModuleCustomizationByModelCuztomizationUUID(String modelCustomizationUUID) {
226 return catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID(modelCustomizationUUID);
229 public CvnfcConfigurationCustomization getCvnfcConfigurationCustomization(String serviceModelUUID,
230 String vnfCustomizationUuid, String vfModuleCustomizationUuid, String cvnfcCustomizationUuid) {
231 return catalogDbClient.getCvnfcCustomization(serviceModelUUID, vnfCustomizationUuid, vfModuleCustomizationUuid,
232 cvnfcCustomizationUuid);
235 public List<VnfcInstanceGroupCustomization> getVnfcInstanceGroups(String modelCustomizationUUID) {
236 return catalogDbClient.getVnfcInstanceGroupsByVnfResourceCust(modelCustomizationUUID);
239 public Map<String, String> getURIKeysFromServiceInstance(String serviceInstanceId) {
240 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId);
241 return uri.getURIKeys();
244 protected RequestDetails getRequestDetails(String requestId) throws IOException {
245 if (requestId != null && !requestId.isEmpty()) {
246 InfraActiveRequests activeRequest = this.getInfraActiveRequest(requestId);
247 String requestBody = activeRequest.getRequestBody().replaceAll("\\\\", "");
248 ObjectMapper objectMapper = new ObjectMapper();
249 objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
250 objectMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
251 objectMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
252 return objectMapper.readValue(requestBody, RequestDetails.class);
258 protected InfraActiveRequests getInfraActiveRequest(String requestId) {
259 if (requestId != null && !requestId.isEmpty()) {
260 return requestsDbClient.getInfraActiveRequestbyRequestId(requestId);
266 protected CloudRegion getCloudRegion(CloudConfiguration cloudConfiguration) {
267 if (cloudConfiguration != null) {
268 String cloudRegionId = cloudConfiguration.getLcpCloudRegionId();
269 String cloudOwner = cloudConfiguration.getCloudOwner();
270 if (cloudRegionId != null && cloudOwner != null && !cloudRegionId.isEmpty() && !cloudOwner.isEmpty()) {
271 return injectionHelper.getAaiClient().get(CloudRegion.class, AAIUriFactory
272 .createResourceUri(AAIObjectType.CLOUD_REGION, cloudOwner, cloudRegionId).depth(Depth.TWO))
283 public InstanceGroup getAAIInstanceGroup(String instanceGroupId) {
284 return injectionHelper.getAaiClient().get(InstanceGroup.class,
285 AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroupId)).orElse(null);
288 public org.onap.aai.domain.yang.Customer getAAICustomer(String globalSubscriberId) {
289 return injectionHelper.getAaiClient().get(org.onap.aai.domain.yang.Customer.class,
290 AAIUriFactory.createResourceUri(AAIObjectType.CUSTOMER, globalSubscriberId)).orElse(null);
293 public ServiceSubscription getAAIServiceSubscription(String globalSubscriberId, String subscriptionServiceType) {
295 if (globalSubscriberId == null || globalSubscriberId.equals("") || subscriptionServiceType == null
296 || subscriptionServiceType.equals("")) {
299 return injectionHelper.getAaiClient().get(ServiceSubscription.class, AAIUriFactory
300 .createResourceUri(AAIObjectType.SERVICE_SUBSCRIPTION, globalSubscriberId, subscriptionServiceType))
306 public ServiceInstance getAAIServiceInstanceById(String serviceInstanceId) {
307 return injectionHelper.getAaiClient()
308 .get(ServiceInstance.class, AAIUriFactory
309 .createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId).depth(Depth.TWO))
313 protected ServiceInstance getAAIServiceInstanceByIdAndCustomer(String globalCustomerId, String serviceType,
314 String serviceInstanceId) {
315 return injectionHelper.getAaiClient().get(ServiceInstance.class, AAIUriFactory
316 .createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustomerId, serviceType, serviceInstanceId)
317 .depth(Depth.TWO)).orElse(null);
320 public org.onap.aai.domain.yang.ServiceInstance getAAIServiceInstanceByName(String serviceInstanceName,
321 Customer customer) throws Exception {
322 Optional<org.onap.aai.domain.yang.ServiceInstance> aaiServiceInstance =
323 injectionHelper.getAaiClient()
324 .getOne(ServiceInstances.class, org.onap.aai.domain.yang.ServiceInstance.class, AAIUriFactory
325 .createResourceUri(AAIObjectPlurals.SERVICE_INSTANCE, customer.getGlobalCustomerId(),
326 customer.getServiceSubscription().getServiceType())
327 .queryParam("service-instance-name", serviceInstanceName).depth(Depth.TWO));
329 return aaiServiceInstance.orElse(null);
332 public Optional<ServiceInstance> getAAIServiceInstanceByName(String globalCustomerId, String serviceType,
333 String serviceInstanceName) {
335 return injectionHelper.getAaiClient().getOne(ServiceInstances.class, ServiceInstance.class,
336 AAIUriFactory.createResourceUri(AAIObjectPlurals.SERVICE_INSTANCE, globalCustomerId, serviceType)
337 .queryParam("service-instance-name", serviceInstanceName).depth(Depth.TWO));
340 public org.onap.so.db.catalog.beans.InstanceGroup getCatalogInstanceGroup(String modelUUID) {
341 return this.catalogDbClient.getInstanceGroupByModelUUID(modelUUID);
344 public List<CollectionResourceInstanceGroupCustomization> getCollectionResourceInstanceGroupCustomization(
345 String modelCustomizationUUID) {
346 return this.catalogDbClient
347 .getCollectionResourceInstanceGroupCustomizationByModelCustUUID(modelCustomizationUUID);
350 public AAIResultWrapper getAAIResourceDepthOne(AAIResourceUri aaiResourceUri) {
351 AAIResourceUri clonedUri = aaiResourceUri.clone();
352 return this.injectionHelper.getAaiClient().get(clonedUri.depth(Depth.ONE));
355 public AAIResultWrapper getAAIResourceDepthTwo(AAIResourceUri aaiResourceUri) {
356 AAIResourceUri clonedUri = aaiResourceUri.clone();
357 return this.injectionHelper.getAaiClient().get(clonedUri.depth(Depth.TWO));
360 public Configuration getAAIConfiguration(String configurationId) {
361 return this.getConcreteAAIResource(Configuration.class, AAIObjectType.CONFIGURATION, configurationId);
364 public GenericVnf getAAIGenericVnf(String vnfId) {
365 return getConcreteAAIResource(GenericVnf.class, AAIObjectType.GENERIC_VNF, vnfId);
368 public VpnBinding getAAIVpnBinding(String vpnBindingId) {
369 return getConcreteAAIResource(VpnBinding.class, AAIObjectType.VPN_BINDING, vpnBindingId);
372 public VolumeGroup getAAIVolumeGroup(String cloudOwnerId, String cloudRegionId, String volumeGroupId) {
373 return getConcreteAAIResource(VolumeGroup.class, AAIObjectType.VOLUME_GROUP, cloudOwnerId, cloudRegionId,
377 public VfModule getAAIVfModule(String vnfId, String vfModuleId) {
378 return getConcreteAAIResource(VfModule.class, AAIObjectType.VF_MODULE, vnfId, vfModuleId);
381 public L3Network getAAIL3Network(String networkId) {
382 return getConcreteAAIResource(L3Network.class, AAIObjectType.L3_NETWORK, networkId);
385 private <T> T getConcreteAAIResource(Class<T> clazz, AAIObjectType objectType, Object... ids) {
386 return injectionHelper.getAaiClient()
387 .get(clazz, AAIUriFactory.createResourceUri(objectType, ids).depth(Depth.ONE)).orElseGet(() -> {
388 logger.debug("No resource of type: {} matched by ids: {}", objectType.typeName(),
389 Arrays.toString(ids));
394 public Optional<ServiceInstance> getRelatedServiceInstanceFromInstanceGroup(String instanceGroupId)
396 AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroupId)
397 .relatedTo(AAIObjectPlurals.SERVICE_INSTANCE);
398 Optional<ServiceInstances> serviceInstances = injectionHelper.getAaiClient().get(ServiceInstances.class, uri);
399 ServiceInstance serviceInstance = null;
400 if (!serviceInstances.isPresent()) {
401 logger.debug("No ServiceInstances were found");
402 return Optional.empty();
404 if (serviceInstances.get().getServiceInstance().isEmpty()) {
405 throw new NoServiceInstanceFoundException("No ServiceInstances Returned");
406 } else if (serviceInstances.get().getServiceInstance().size() > 1) {
407 String message = String.format("Mulitple service instances were found for instance-group-id: %s.",
409 throw new MultipleObjectsFoundException(message);
411 serviceInstance = serviceInstances.get().getServiceInstance().get(0);
413 return Optional.of(serviceInstance);
417 public Optional<L3Network> getRelatedNetworkByNameFromServiceInstance(String serviceInstanceId, String networkName)
418 throws MultipleObjectsFoundException {
419 AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
420 .relatedTo(AAIObjectPlurals.L3_NETWORK).queryParam("network-name", networkName);
421 Optional<L3Networks> networks = injectionHelper.getAaiClient().get(L3Networks.class, uri);
422 L3Network network = null;
423 if (!networks.isPresent()) {
424 logger.debug("No Networks matched by name");
425 return Optional.empty();
427 if (networks.get().getL3Network().size() > 1) {
429 String.format("Multiple networks found for service-instance-id: %s and network-name: %s.",
430 serviceInstanceId, networkName);
431 throw new MultipleObjectsFoundException(message);
433 network = networks.get().getL3Network().get(0);
435 return Optional.of(network);
439 public Optional<GenericVnf> getRelatedVnfByNameFromServiceInstance(String serviceInstanceId, String vnfName) {
440 AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
441 .relatedTo(AAIObjectPlurals.GENERIC_VNF).queryParam("vnf-name", vnfName);
442 return injectionHelper.getAaiClient().getOne(GenericVnfs.class, GenericVnf.class, uri);
446 public Optional<VolumeGroup> getRelatedVolumeGroupByNameFromVnf(String vnfId, String volumeGroupName) {
447 AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
448 .relatedTo(AAIObjectPlurals.VOLUME_GROUP).queryParam("volume-group-name", volumeGroupName);
449 return injectionHelper.getAaiClient().getOne(VolumeGroups.class, VolumeGroup.class, uri);
452 public Optional<VolumeGroup> getRelatedVolumeGroupByIdFromVnf(String vnfId, String volumeGroupId) {
453 AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
454 .relatedTo(AAIObjectPlurals.VOLUME_GROUP).queryParam("volume-group-id", volumeGroupId);
455 return injectionHelper.getAaiClient().getOne(VolumeGroups.class, VolumeGroup.class, uri);
458 public Optional<VolumeGroup> getRelatedVolumeGroupByNameFromVfModule(String vnfId, String vfModuleId,
459 String volumeGroupName) throws Exception {
460 AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VF_MODULE, vnfId, vfModuleId)
461 .relatedTo(AAIObjectPlurals.VOLUME_GROUP).queryParam("volume-group-name", volumeGroupName);
462 return injectionHelper.getAaiClient().getOne(VolumeGroups.class, VolumeGroup.class, uri);
465 public Optional<VolumeGroup> getRelatedVolumeGroupFromVfModule(String vnfId, String vfModuleId) throws Exception {
466 AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VF_MODULE, vnfId, vfModuleId)
467 .relatedTo(AAIObjectPlurals.VOLUME_GROUP);
468 return injectionHelper.getAaiClient().getOne(VolumeGroups.class, VolumeGroup.class, uri);
471 public Optional<org.onap.aai.domain.yang.VpnBinding> getAICVpnBindingFromNetwork(
472 org.onap.aai.domain.yang.L3Network aaiLocalNetwork) {
473 AAIResultWrapper networkWrapper = new AAIResultWrapper(aaiLocalNetwork);
474 if (networkWrapper.getRelationships().isPresent()
475 && !networkWrapper.getRelationships().get().getRelatedUris(AAIObjectType.VPN_BINDING).isEmpty()) {
476 return getAAIResourceDepthOne(
477 networkWrapper.getRelationships().get().getRelatedUris(AAIObjectType.VPN_BINDING).get(0))
478 .asBean(org.onap.aai.domain.yang.VpnBinding.class);
480 return Optional.empty();
483 public ServiceInstances getAAIServiceInstancesGloballyByName(String serviceInstanceName) {
485 return injectionHelper.getAaiClient()
486 .get(ServiceInstances.class, AAIUriFactory.createNodesUri(AAIObjectPlurals.SERVICE_INSTANCE)
487 .queryParam("service-instance-name", serviceInstanceName))
489 logger.debug("No Service Instance matched by name");
494 public boolean existsAAINetworksGloballyByName(String networkName) {
496 AAIPluralResourceUri l3networkUri =
497 AAIUriFactory.createResourceUri(AAIObjectPlurals.L3_NETWORK).queryParam("network-name", networkName);
498 AAIResourcesClient aaiRC = injectionHelper.getAaiClient();
499 return aaiRC.exists(l3networkUri);
502 public boolean existsAAIVfModuleGloballyByName(String vfModuleName) {
503 AAIPluralResourceUri vfModuleUri =
504 AAIUriFactory.createNodesUri(AAIObjectPlurals.VF_MODULE).queryParam("vf-module-name", vfModuleName);
505 return injectionHelper.getAaiClient().exists(vfModuleUri);
508 public boolean existsAAIConfigurationGloballyByName(String configurationName) {
509 AAIPluralResourceUri configUri = AAIUriFactory.createResourceUri(AAIObjectPlurals.CONFIGURATION)
510 .queryParam("configuration-name", configurationName);
511 return injectionHelper.getAaiClient().exists(configUri);
514 public boolean existsAAIVolumeGroupGloballyByName(String volumeGroupName) {
515 AAIPluralResourceUri volumeGroupUri = AAIUriFactory.createNodesUri(AAIObjectPlurals.VOLUME_GROUP)
516 .queryParam("volume-group-name", volumeGroupName);
517 return injectionHelper.getAaiClient().exists(volumeGroupUri);
520 public GenericVnfs getAAIVnfsGloballyByName(String vnfName) {
522 return injectionHelper.getAaiClient()
523 .get(GenericVnfs.class,
524 AAIUriFactory.createNodesUri(AAIObjectPlurals.GENERIC_VNF).queryParam("vnf-name", vnfName))
526 logger.debug("No GenericVnfs matched by name");
531 public Optional<Configuration> getRelatedConfigurationByNameFromServiceInstance(String serviceInstanceId,
532 String configurationName) {
533 AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
534 .relatedTo(AAIObjectPlurals.CONFIGURATION).queryParam("configuration-name", configurationName);
535 return injectionHelper.getAaiClient().getOne(Configurations.class, Configuration.class, uri);