a522129c31887aa2609ab32ba4f39a4c7d8972e4
[so.git] /
1 package org.onap.so.apihandlerinfra.infra.rest;
2
3 import java.util.List;
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;
30
31 @Component
32 public class AAIDataRetrieval {
33
34     private static final String VF_MODULE_NOT_FOUND_IN_INVENTORY_VNF_ID = "VF Module Not Found In Inventory, VnfId: ";
35
36     private AAIResourcesClient aaiResourcesClient;
37
38     private AAIDSLQueryClient aaiDslQueryClient;
39
40     private static final Logger logger = LoggerFactory.getLogger(AAIDataRetrieval.class);
41
42     public ServiceInstance getServiceInstance(String serviceInstanceId) {
43         return this.getAaiResourcesClient()
44                 .get(ServiceInstance.class,
45                         AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId))
46                 .orElseGet(() -> {
47                     logger.debug("No Service Instance found in A&AI ServiceInstanceId: {}", serviceInstanceId);
48                     return null;
49                 });
50     }
51
52     public VfModule getAAIVfModule(String vnfId, String vfModuleId) {
53         return this.getAaiResourcesClient()
54                 .get(VfModule.class, AAIUriFactory.createResourceUri(AAIObjectType.VF_MODULE, vnfId, vfModuleId))
55                 .orElseGet(() -> {
56                     logger.debug("No Vf Module found in A&AI VnfId: {}" + ", VfModuleId: {}", vnfId, vfModuleId);
57                     return null;
58                 });
59     }
60
61     public GenericVnf getGenericVnf(String vnfId) {
62         return this.getAaiResourcesClient()
63                 .get(GenericVnf.class, AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId))
64                 .orElseGet(() -> {
65                     logger.debug("No Generic VNF found in A&AI VnfId: {}", vnfId);
66                     return null;
67                 });
68     }
69
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()) {
76             return volume.get();
77         } else {
78             logger.debug("No VolumeGroup in A&AI found: {}", vnfId);
79             return null;
80         }
81     }
82
83     public L3Network getNetwork(String networkId) {
84         return this.getAaiResourcesClient()
85                 .get(L3Network.class, AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId))
86                 .orElseGet(() -> {
87                     logger.debug("No Network found in A&AI NetworkId: {}", networkId);
88                     return null;
89                 });
90     }
91
92
93     public boolean isVolumeGroupRelatedToVFModule(String volumeGroupId) {
94         return this.getAaiResourcesClient().exists(AAIUriFactory
95                 .createResourceUri(AAIObjectType.VOLUME_GROUP, volumeGroupId).relatedTo(AAIObjectPlurals.VF_MODULE));
96     }
97
98     public boolean isVnfRelatedToVolumes(String vnfId) {
99         return this.getAaiResourcesClient().exists(AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
100                 .relatedTo(AAIObjectPlurals.VOLUME_GROUP));
101     }
102
103     public boolean isNetworkRelatedToModules(String networkId) {
104         return this.getAaiResourcesClient().exists(AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId)
105                 .relatedTo(AAIObjectPlurals.VF_MODULE));
106     }
107
108     public boolean isServiceRelatedToNetworks(String serviceInstanceId) {
109         return this.getAaiResourcesClient()
110                 .exists(AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
111                         .relatedTo(AAIObjectPlurals.L3_NETWORK));
112     }
113
114     public boolean isServiceRelatedToGenericVnf(String serviceInstanceId) {
115         return this.getAaiResourcesClient()
116                 .exists(AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
117                         .relatedTo(AAIObjectPlurals.GENERIC_VNF));
118     }
119
120     public boolean isServiceRelatedToConfiguration(String serviceInstanceId) {
121         return this.getAaiResourcesClient()
122                 .exists(AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
123                         .relatedTo(AAIObjectPlurals.CONFIGURATION));
124     }
125
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);
130                     return null;
131                 });
132     }
133
134     public Tenant getTenant(String cloudOwner, String cloudRegion, String tenantId) {
135         return this.getAaiResourcesClient()
136                 .get(Tenant.class,
137                         AAIUriFactory.createResourceUri(AAIObjectType.TENANT, cloudOwner, cloudRegion, tenantId))
138                 .orElseGet(() -> {
139                     logger.debug("No Tenant found in A&AI TenantId: {}", tenantId);
140                     return null;
141                 });
142     }
143
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);
150         return linterfaces;
151     }
152
153     private AAIDSLQueryClient getAAIDSLQueryClient() {
154         if (aaiDslQueryClient == null) {
155             aaiDslQueryClient = new AAIDSLQueryClient();
156         }
157         return aaiDslQueryClient;
158     }
159
160     protected AAIResourcesClient getAaiResourcesClient() {
161         if (aaiResourcesClient == null) {
162             aaiResourcesClient = new AAIResourcesClient();
163         }
164         return aaiResourcesClient;
165     }
166
167 }