You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by pe...@apache.org on 2024/01/23 13:46:35 UTC
(cloudstack) 01/01: NSX: Add retry logic with sleep to delete segments
This is an automated email from the ASF dual-hosted git repository.
pearl11594 pushed a commit to branch nsx-add-sleep-for-deletion-nw
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit 6f86193f336de75f5c4a400ecb9aa5e645a5702d
Author: Pearl Dsilva <pe...@gmail.com>
AuthorDate: Tue Jan 23 08:46:13 2024 -0500
NSX: Add retry logic with sleep to delete segments
---
.../apache/cloudstack/service/NsxApiClient.java | 24 ++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
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 d4ac0e7a7e2..1e2c17c4472 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
@@ -453,8 +453,9 @@ public class NsxApiClient {
String siteId = getDefaultSiteId();
String enforcementPointPath = getDefaultEnforcementPointPath(siteId);
SegmentPorts segmentPortsService = (SegmentPorts) nsxService.apply(SegmentPorts.class);
- PolicyGroupMembersListResult segmentPortsList = segmentPortsService.list(DEFAULT_DOMAIN, segmentName, null, enforcementPointPath,
- false, null, 50L, false, null);
+ PolicyGroupMembersListResult segmentPortsList = getSegmentPortList(segmentPortsService, segmentName, enforcementPointPath);
+ Long portCount = segmentPortsList.getResultCount();
+ portCount = retrySegmentDeletion(segmentPortsService, portCount, segmentName, enforcementPointPath);
if (segmentPortsList.getResultCount() == 0L) {
LOGGER.debug(String.format("Removing the segment with ID %s", segmentName));
removeGroupForSegment(segmentName);
@@ -466,6 +467,25 @@ public class NsxApiClient {
}
}
+ private PolicyGroupMembersListResult getSegmentPortList(SegmentPorts segmentPortsService, String segmentName, String enforcementPointPath) {
+ return segmentPortsService.list(DEFAULT_DOMAIN, segmentName, null, enforcementPointPath,
+ false, null, 50L, false, null);
+ }
+
+ private Long retrySegmentDeletion(SegmentPorts segmentPortsService, Long portCount, String segmentName, String enforcementPointPath) {
+ int retries = 5;
+ do {
+ try {
+ Thread.sleep(5000);
+ portCount = getSegmentPortList(segmentPortsService, segmentName, enforcementPointPath).getResultCount();
+ retries--;
+ } catch (InterruptedException e) {
+ throw new CloudRuntimeException(String.format("Unable to delete segment %s due to: %s", segmentName, e.getLocalizedMessage()));
+ }
+ } while (retries > 0 && portCount > 0);
+ return portCount;
+ }
+
public void createStaticNatRule(String vpcName, String tier1GatewayName,
String ruleName, String publicIp, String vmIp) {
try {