From 4457c62ad3212c497b6f94f4cc5e40f726d9c9a5 Mon Sep 17 00:00:00 2001 From: Nicolas Vazquez Date: Thu, 14 Dec 2023 09:38:24 -0300 Subject: [PATCH] [NSX] Address SonarCloud Bugs (#8341) * [NSX] Address SonarCloud Bugs * Fix NSX API connection issues --- .../api/command/admin/network/CreateNetworkOfferingCmd.java | 4 ++-- .../api/command/admin/vpc/CreateVPCOfferingCmd.java | 4 ++-- .../api/command/user/address/ListPublicIpAddressesCmd.java | 4 ++-- .../java/org/apache/cloudstack/resource/NsxResource.java | 6 +++++- .../java/org/apache/cloudstack/service/NsxApiClient.java | 3 ++- .../org/apache/cloudstack/service/NsxGuestNetworkGuru.java | 3 ++- .../org/apache/cloudstack/service/NsxPublicNetworkGuru.java | 2 +- 7 files changed, 16 insertions(+), 10 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java index 80bd7d4dfef..5d0a87ef0df 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java @@ -23,7 +23,6 @@ import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -32,6 +31,7 @@ import com.cloud.network.VirtualRouterProvider; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ZoneResponse; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; @@ -287,7 +287,7 @@ public class CreateNetworkOfferingCmd extends BaseCmd { } public Boolean isForNsx() { - return !Objects.isNull(forNsx) && forNsx; + return BooleanUtils.isTrue(forNsx); } public String getNsxMode() { diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.java index a88b2845d93..e514ddb508b 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.java @@ -23,7 +23,6 @@ import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -33,6 +32,7 @@ import com.cloud.network.VirtualRouterProvider; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ZoneResponse; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; @@ -164,7 +164,7 @@ public class CreateVPCOfferingCmd extends BaseAsyncCreateCmd { } public Boolean isForNsx() { - return !Objects.isNull(forNsx) && forNsx; + return BooleanUtils.isTrue(forNsx); } public String getNsxMode() { diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/address/ListPublicIpAddressesCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/address/ListPublicIpAddressesCmd.java index 8bd28f6ad7e..118374c75ed 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/address/ListPublicIpAddressesCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/address/ListPublicIpAddressesCmd.java @@ -18,8 +18,8 @@ package org.apache.cloudstack.api.command.user.address; import java.util.ArrayList; import java.util.List; -import java.util.Objects; +import org.apache.commons.lang.BooleanUtils; import org.apache.log4j.Logger; import org.apache.cloudstack.acl.RoleType; @@ -182,7 +182,7 @@ public class ListPublicIpAddressesCmd extends BaseListRetrieveOnlyResourceCountC } public boolean getForSystemVMs() { - return !Objects.isNull(forSystemVMs) && forSystemVMs; + return BooleanUtils.isTrue(forSystemVMs); } ///////////////////////////////////////////////////// diff --git a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/resource/NsxResource.java b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/resource/NsxResource.java index 35017ed27ba..d36e9ee5809 100644 --- a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/resource/NsxResource.java +++ b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/resource/NsxResource.java @@ -371,8 +371,12 @@ public class NsxResource implements ServerResource { String segmentName = NsxControllerUtils.getNsxSegmentId(cmd.getDomainId(), cmd.getAccountId(), cmd.getZoneId(), cmd.getVpcId(), cmd.getNetworkId()); try { - Thread.sleep(30*1000); + Thread.sleep(30 * 1000L); nsxApiClient.deleteSegment(cmd.getZoneId(), cmd.getDomainId(), cmd.getAccountId(), cmd.getVpcId(), cmd.getNetworkId(), segmentName); + } catch (InterruptedException | ThreadDeath e) { + LOGGER.error("Thread interrupted", e); + Thread.currentThread().interrupt(); + return new NsxAnswer(cmd, new CloudRuntimeException(e.getMessage())); } catch (Exception e) { LOGGER.error(String.format("Failed to delete NSX segment: %s", segmentName)); return new NsxAnswer(cmd, new CloudRuntimeException(e.getMessage())); diff --git a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxApiClient.java b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxApiClient.java index 24ef915d101..5a3cf48aa04 100644 --- a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxApiClient.java +++ b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxApiClient.java @@ -97,6 +97,7 @@ import static org.apache.cloudstack.utils.NsxControllerUtils.getLoadBalancerAlgo public class NsxApiClient { + protected ApiClient apiClient; protected Function, Service> nsxService; public static final int RESPONSE_TIMEOUT_SECONDS = 60; @@ -187,7 +188,7 @@ public class NsxApiClient { .register(Configuration.STUB_CONFIG_CFG, stubConfig) .register(RestProtocol.REST_REQUEST_AUTHENTICATOR_CFG, new BasicAuthenticationAppender()); Configuration config = configBuilder.build(); - ApiClient apiClient = ApiClients.newRestClient(controllerUrl, config); + apiClient = ApiClients.newRestClient(controllerUrl, config); nsxService = apiClient::createStub; } diff --git a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxGuestNetworkGuru.java b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxGuestNetworkGuru.java index b38ca453ff4..df7a79655d7 100644 --- a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxGuestNetworkGuru.java +++ b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxGuestNetworkGuru.java @@ -104,10 +104,11 @@ public class NsxGuestNetworkGuru extends GuestNetworkGuru implements NetworkMigr } NetworkVO network = (NetworkVO) super.design(offering, plan, userSpecified, name, vpcId, owner); - network.setBroadcastDomainType(Networks.BroadcastDomainType.NSX); if (network == null) { return null; } + network.setBroadcastDomainType(Networks.BroadcastDomainType.NSX); + if (userSpecified != null) { if ((userSpecified.getIp6Cidr() == null && userSpecified.getIp6Gateway() != null) || ( userSpecified.getIp6Cidr() != null && userSpecified.getIp6Gateway() == null)) { diff --git a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxPublicNetworkGuru.java b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxPublicNetworkGuru.java index 8de26852161..74926ffd380 100644 --- a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxPublicNetworkGuru.java +++ b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxPublicNetworkGuru.java @@ -106,6 +106,7 @@ public class NsxPublicNetworkGuru extends PublicNetworkGuru { throw new CloudRuntimeException(err); } Long vpcId = ipAddress.getVpcId(); + boolean isForVpc = vpcId != null; if (vpcId == null) { // TODO: Pass network.getId() to support isolated networks throw new CloudRuntimeException("TODO: Add support for isolated networks public network"); @@ -133,7 +134,6 @@ public class NsxPublicNetworkGuru extends PublicNetworkGuru { long accountId = vpc.getAccountId(); long domainId = vpc.getDomainId(); long dataCenterId = vpc.getZoneId(); - boolean isForVpc = true; long resourceId = isForVpc ? vpc.getId() : network.getId(); Network.Service[] services = { Network.Service.SourceNat }; boolean sourceNatEnabled = vpcOfferingServiceMapDao.areServicesSupportedByVpcOffering(vpc.getVpcOfferingId(), services);