1 package org.onap.so.apihandlerinfra.infra.rest;
 
   4 import java.util.Optional;
 
   5 import org.onap.aai.domain.yang.GenericVnf;
 
   6 import org.onap.aai.domain.yang.L3Network;
 
   7 import org.onap.aai.domain.yang.LInterface;
 
   8 import org.onap.aai.domain.yang.Service;
 
   9 import org.onap.aai.domain.yang.ServiceInstance;
 
  10 import org.onap.aai.domain.yang.Tenant;
 
  11 import org.onap.aai.domain.yang.VfModule;
 
  12 import org.onap.aai.domain.yang.VolumeGroup;
 
  13 import org.onap.so.apihandlerinfra.infra.rest.exception.AAIEntityNotFound;
 
  14 import org.onap.so.client.aai.AAIDSLQueryClient;
 
  15 import org.onap.so.client.aai.AAIObjectPlurals;
 
  16 import org.onap.so.client.aai.AAIObjectType;
 
  17 import org.onap.so.client.aai.AAIResourcesClient;
 
  18 import org.onap.so.client.aai.entities.AAIResultWrapper;
 
  19 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
 
  20 import org.onap.so.client.graphinventory.entities.DSLQuery;
 
  21 import org.onap.so.client.graphinventory.entities.DSLQueryBuilder;
 
  22 import org.onap.so.client.graphinventory.entities.DSLStartNode;
 
  23 import org.onap.so.client.graphinventory.entities.Node;
 
  24 import org.onap.so.client.graphinventory.entities.Start;
 
  25 import org.onap.so.client.graphinventory.entities.TraversalBuilder;
 
  26 import org.onap.so.client.graphinventory.entities.__;
 
  27 import org.slf4j.Logger;
 
  28 import org.slf4j.LoggerFactory;
 
  29 import org.springframework.stereotype.Component;
 
  32 public class AAIDataRetrieval {
 
  34     private static final String VF_MODULE_NOT_FOUND_IN_INVENTORY_VNF_ID = "VF Module Not Found In Inventory, VnfId: ";
 
  36     private AAIResourcesClient aaiResourcesClient;
 
  38     private AAIDSLQueryClient aaiDslQueryClient;
 
  40     private static final Logger logger = LoggerFactory.getLogger(AAIDataRetrieval.class);
 
  42     public ServiceInstance getServiceInstance(String serviceInstanceId) {
 
  43         return this.getAaiResourcesClient()
 
  44                 .get(ServiceInstance.class,
 
  45                         AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId))
 
  47                     logger.debug("No Service Instance found in A&AI ServiceInstanceId: {}", serviceInstanceId);
 
  52     public VfModule getAAIVfModule(String vnfId, String vfModuleId) {
 
  53         return this.getAaiResourcesClient()
 
  54                 .get(VfModule.class, AAIUriFactory.createResourceUri(AAIObjectType.VF_MODULE, vnfId, vfModuleId))
 
  56                     logger.debug("No Vf Module found in A&AI VnfId: {}" + ", VfModuleId: {}", vnfId, vfModuleId);
 
  61     public GenericVnf getGenericVnf(String vnfId) {
 
  62         return this.getAaiResourcesClient()
 
  63                 .get(GenericVnf.class, AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId))
 
  65                     logger.debug("No Generic VNF found in A&AI VnfId: {}", vnfId);
 
  70     public VolumeGroup getVolumeGroup(String vnfId, String volumeGroupId) throws AAIEntityNotFound {
 
  71         AAIResultWrapper wrapper =
 
  72                 this.getAaiResourcesClient().get(AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
 
  73                         .relatedTo(AAIObjectType.VOLUME_GROUP, volumeGroupId));
 
  74         Optional<VolumeGroup> volume = wrapper.asBean(VolumeGroup.class);
 
  75         if (volume.isPresent()) {
 
  78             logger.debug("No VolumeGroup in A&AI found: {}", vnfId);
 
  83     public L3Network getNetwork(String networkId) {
 
  84         return this.getAaiResourcesClient()
 
  85                 .get(L3Network.class, AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId))
 
  87                     logger.debug("No Network found in A&AI NetworkId: {}", networkId);
 
  93     public boolean isVolumeGroupRelatedToVFModule(String volumeGroupId) {
 
  94         return this.getAaiResourcesClient().exists(AAIUriFactory
 
  95                 .createResourceUri(AAIObjectType.VOLUME_GROUP, volumeGroupId).relatedTo(AAIObjectPlurals.VF_MODULE));
 
  98     public boolean isVnfRelatedToVolumes(String vnfId) {
 
  99         return this.getAaiResourcesClient().exists(AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
 
 100                 .relatedTo(AAIObjectPlurals.VOLUME_GROUP));
 
 103     public boolean isNetworkRelatedToModules(String networkId) {
 
 104         return this.getAaiResourcesClient().exists(AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId)
 
 105                 .relatedTo(AAIObjectPlurals.VF_MODULE));
 
 108     public boolean isServiceRelatedToNetworks(String serviceInstanceId) {
 
 109         return this.getAaiResourcesClient()
 
 110                 .exists(AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
 
 111                         .relatedTo(AAIObjectPlurals.L3_NETWORK));
 
 114     public boolean isServiceRelatedToGenericVnf(String serviceInstanceId) {
 
 115         return this.getAaiResourcesClient()
 
 116                 .exists(AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
 
 117                         .relatedTo(AAIObjectPlurals.GENERIC_VNF));
 
 120     public boolean isServiceRelatedToConfiguration(String serviceInstanceId) {
 
 121         return this.getAaiResourcesClient()
 
 122                 .exists(AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
 
 123                         .relatedTo(AAIObjectPlurals.CONFIGURATION));
 
 126     public Service getService(String serviceId) {
 
 127         return this.getAaiResourcesClient()
 
 128                 .get(Service.class, AAIUriFactory.createResourceUri(AAIObjectType.SERVICE, serviceId)).orElseGet(() -> {
 
 129                     logger.debug("No Service found in A&AI ServiceId: {}", serviceId);
 
 134     public Tenant getTenant(String cloudOwner, String cloudRegion, String tenantId) {
 
 135         return this.getAaiResourcesClient()
 
 137                         AAIUriFactory.createResourceUri(AAIObjectType.TENANT, cloudOwner, cloudRegion, tenantId))
 
 139                     logger.debug("No Tenant found in A&AI TenantId: {}", tenantId);
 
 144     public List<LInterface> getLinterfacesOfVnf(String vnfId) {
 
 145         DSLStartNode startNode = new DSLStartNode(AAIObjectType.GENERIC_VNF, __.key("generic-vnf-id", vnfId));
 
 146         DSLQueryBuilder<Start, Node> builder = TraversalBuilder.fragment(startNode)
 
 147                 .to(__.node(AAIObjectType.VSERVER).to(__.node(AAIObjectType.L_INTERFACE).output()));
 
 148         List<LInterface> linterfaces =
 
 149                 getAAIDSLQueryClient().querySingleResource(new DSLQuery(builder.build()), LInterface.class);
 
 153     private AAIDSLQueryClient getAAIDSLQueryClient() {
 
 154         if (aaiDslQueryClient == null) {
 
 155             aaiDslQueryClient = new AAIDSLQueryClient();
 
 157         return aaiDslQueryClient;
 
 160     protected AAIResourcesClient getAaiResourcesClient() {
 
 161         if (aaiResourcesClient == null) {
 
 162             aaiResourcesClient = new AAIResourcesClient();
 
 164         return aaiResourcesClient;