2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 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.adapters.audit;
23 import java.util.Optional;
26 import org.onap.aai.domain.yang.LInterface;
27 import org.onap.aai.domain.yang.LInterfaces;
28 import org.onap.aai.domain.yang.Vserver;
29 import org.onap.so.client.aai.AAIObjectPlurals;
30 import org.onap.so.client.aai.AAIObjectType;
31 import org.onap.so.client.aai.entities.AAIResultWrapper;
32 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
33 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
34 import org.slf4j.Logger;
35 import org.slf4j.LoggerFactory;
36 import org.springframework.stereotype.Component;
39 public class AuditVServer extends AbstractAudit {
40 private static final Logger logger = LoggerFactory.getLogger(AuditVServer.class);
42 public boolean auditAllVserversDoExist(Set<Vserver> vServersToAudit, String tenantId, String cloudOwner, String cloudRegion) {
43 if (vServersToAudit == null || vServersToAudit.isEmpty()){
46 return vServersToAudit.stream()
47 .filter(vServer -> !doesVServerExistInAAI(vServer, tenantId, cloudOwner, cloudRegion,true)).findFirst()
48 .map(v -> false).orElse(true);
51 public boolean auditAllVserversDoNotExist(Set<Vserver> vServersToAudit, String tenantId, String cloudOwner, String cloudRegion) {
52 if (vServersToAudit == null || vServersToAudit.isEmpty()){
55 return vServersToAudit.stream()
56 .filter(vServer -> doesVServerExistInAAI(vServer, tenantId, cloudOwner, cloudRegion,false)).findFirst()
57 .map(v -> false).orElse(true);
60 private boolean doesVServerExistInAAI(Vserver vServer, String tenantId, String cloudOwner, String cloudRegion, boolean checkLinterfaces) {
61 AAIResourceUri vserverURI = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER, cloudOwner, cloudRegion,
62 tenantId, vServer.getVserverId());
63 boolean vServerExists = getAaiClient().exists(vserverURI);
64 boolean doesExist = getAaiClient().exists(vserverURI);
65 logger.info("v-server {} exists: {}", vServer.getVserverId(), doesExist);
66 boolean allNeutronNetworksExist = true;
67 if (vServerExists && vServer.getLInterfaces() != null && checkLinterfaces) {
68 allNeutronNetworksExist = vServer.getLInterfaces()
69 .getLInterface().stream().filter(lInterface -> !doesLinterfaceExistinAAI(lInterface,
70 vServer.getVserverId(), tenantId, cloudOwner, cloudRegion))
71 .findFirst().map(v -> false).orElse(true);
73 return vServerExists && allNeutronNetworksExist;
76 private boolean doesLinterfaceExistinAAI(LInterface lInterface, String vServerId, String tenantId,
77 String cloudOwner, String cloudRegion) {
78 boolean doesLInterfaceExist = false;
79 boolean doSubInterfacesExist = true;
80 AAIResourceUri linterfaceURI = AAIUriFactory
81 .createResourceUri(AAIObjectPlurals.L_INTERFACE, cloudOwner, cloudRegion, tenantId, vServerId)
82 .queryParam("interface-id", lInterface.getInterfaceId());
83 Optional<LInterfaces> queriedLInterface = getAaiClient().get(LInterfaces.class, linterfaceURI);
84 if (queriedLInterface.isPresent()) {
85 if (queriedLInterface.get().getLInterface().size() > 1) {
86 logger.error("Non-Unique LInterface Found stopping audit, L-Interface Id: " +lInterface.getInterfaceId());
87 doesLInterfaceExist = false;
89 doesLInterfaceExist = true;
90 lInterface.setInterfaceName(queriedLInterface.get().getLInterface().get(0).getInterfaceName());
93 logger.info("l-interface id:{} name: {} exists: {}", lInterface.getInterfaceId(), lInterface.getInterfaceName(),
96 if (doesLInterfaceExist && lInterface.getLInterfaces() != null) {
97 doSubInterfacesExist = lInterface.getLInterfaces().getLInterface()
98 .stream().filter(subInterface -> !doesSubInterfaceExistinAAI(subInterface,
99 lInterface.getInterfaceName(), vServerId, tenantId, cloudOwner, cloudRegion))
100 .findFirst().map(v -> false).orElse(true);
102 logger.debug("l-interface {} does not contain any sub-iterfaces", lInterface.getInterfaceId());
104 return doesLInterfaceExist && doSubInterfacesExist;
107 private boolean doesSubInterfaceExistinAAI(LInterface subInterface, String linterfaceName, String vServerId,
108 String tenantId, String cloudOwner, String cloudRegion) {
109 logger.info("checking if sub-l-interface {} , linterfaceName: {} vserverId: {} exists",
110 subInterface.getInterfaceId(), linterfaceName, vServerId);
112 AAIResourceUri linterfaceURI = AAIUriFactory.createResourceUri(AAIObjectPlurals.SUB_L_INTERFACE, cloudOwner,
113 cloudRegion, tenantId, vServerId, linterfaceName)
114 .queryParam("interface-id", subInterface.getInterfaceId());
116 boolean doesExist = getAaiClient().exists(linterfaceURI);
117 logger.info("sub-l-interface {} exists: {}", subInterface.getInterfaceId(), doesExist);