This is an automated email from the ASF dual-hosted git repository. pearl11594 pushed a commit to branch netris-integration-upstream in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit 46f8aab9a231b1def52b8ba1eca6f40f56895610 Author: Pearl Dsilva <pearl1...@gmail.com> AuthorDate: Wed Feb 5 09:29:30 2025 -0500 Fix naming convention for NAT subnets to follow other resources (#47) * Fix naming convention for NAT subnets to follow other resources * Use vpc ID for nat subnets * Use new nat subnet name for deletion of static nat rule * fix naming convevntion for nat subnet --- .../cloudstack/resource/NetrisResourceObjectUtils.java | 9 ++++++++- .../apache/cloudstack/service/NetrisApiClientImpl.java | 17 +++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/resource/NetrisResourceObjectUtils.java b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/resource/NetrisResourceObjectUtils.java index 32225fdd199..9caff9793ff 100644 --- a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/resource/NetrisResourceObjectUtils.java +++ b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/resource/NetrisResourceObjectUtils.java @@ -19,6 +19,8 @@ package org.apache.cloudstack.resource; import org.apache.cloudstack.agent.api.NetrisCommand; import org.apache.commons.lang3.ArrayUtils; +import java.util.Objects; + public class NetrisResourceObjectUtils { public enum NetrisObjectType { @@ -57,7 +59,12 @@ public class NetrisResourceObjectUtils { break; case IPAM_SUBNET: if (!isZoneLevel) { - stringBuilder.append(String.format("-N%s", objectId)); + if (Objects.nonNull(objectId) && Objects.nonNull(objectName)) { + stringBuilder.append(String.format("-N%s", objectId)); + } else { + stringBuilder.append(String.format("-V%s-%s", suffixes[0], suffixes[1])); + return stringBuilder.toString(); + } } break; case SNAT: diff --git a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClientImpl.java b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClientImpl.java index 681924d82d8..7f80947974d 100644 --- a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClientImpl.java +++ b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClientImpl.java @@ -299,7 +299,9 @@ public class NetrisApiClientImpl implements NetrisApiClient { if (ruleExists) { deleteNatRule(natRuleName, existingNatRule.getId(), vpcResource.getName()); if (cmd.getNatRuleType().equals("STATICNAT")) { - deleteNatSubnet(vpcResource.getId(), cmd.getNatIp()); + String natIp = cmd.getNatIp(); + String netrisSubnetName = NetrisResourceObjectUtils.retrieveNetrisResourceObjectName(cmd, NetrisResourceObjectUtils.NetrisObjectType.IPAM_SUBNET, String.valueOf(cmd.getVpcId()), natIp); + deleteNatSubnet(netrisSubnetName, vpcResource.getId(), natIp); } } } catch (Exception e) { @@ -893,7 +895,7 @@ public class NetrisApiClientImpl implements NetrisApiClient { if (StringUtils.isNotBlank(targetIpSubnet) && existsDestinationSubnet(targetIpSubnet)) { logger.debug(String.format("Creating subnet with NAT purpose for %s", targetIpSubnet)); - createNatSubnet(targetIpSubnet, vpcResource.getId()); + createNatSubnet(cmd, targetIpSubnet, vpcResource.getId()); } NatGetBody existingNatRule = netrisNatRuleExists(ruleName); @@ -959,7 +961,7 @@ public class NetrisApiClientImpl implements NetrisApiClient { return false; } // Create a /32 subnet for the DNAT IP - createNatSubnet(natIP, vpcResource.getId()); + createNatSubnet(cmd, natIP, vpcResource.getId()); NatApi natApi = apiClient.getApiStubForMethod(NatApi.class); NatPostBody natBody = new NatPostBody(); natBody.setAction(NatPostBody.ActionEnum.DNAT); @@ -993,15 +995,15 @@ public class NetrisApiClientImpl implements NetrisApiClient { return true; } - private void createNatSubnet(String natIp, Integer netrisVpcId) { + private void createNatSubnet(NetrisCommand cmd, String natIp, Integer netrisVpcId) { try { FilterByVpc vpcFilter = new FilterByVpc(); vpcFilter.add(netrisVpcId); - String netrisSubnetName = natIp; + String netrisSubnetName = NetrisResourceObjectUtils.retrieveNetrisResourceObjectName(cmd, NetrisResourceObjectUtils.NetrisObjectType.IPAM_SUBNET, String.valueOf(((CreateOrUpdateNetrisNatCommand)cmd).getVpcId()), natIp); List<IpTreeSubnet> matchedSubnets = getSubnet(vpcFilter, netrisSubnetName); if (matchedSubnets.isEmpty()) { VPCListing systemVpc = getSystemVpc(); - createIpamSubnetInternal(natIp, natIp, SubnetBody.PurposeEnum.NAT, systemVpc, null); + createIpamSubnetInternal(netrisSubnetName, natIp, SubnetBody.PurposeEnum.NAT, systemVpc, null); return; } logger.debug("NAT subnet: {} already exists", natIp); @@ -1344,10 +1346,9 @@ public class NetrisApiClientImpl implements NetrisApiClient { return NetrisResourceObjectUtils.retrieveNetrisResourceObjectName(cmd, NetrisResourceObjectUtils.NetrisObjectType.VPC, suffix); } - private void deleteNatSubnet(Integer netrisVpcId, String natIp) { + private void deleteNatSubnet(String netrisSubnetName, Integer netrisVpcId, String natIp) { FilterByVpc vpcFilter = new FilterByVpc(); vpcFilter.add(netrisVpcId); - String netrisSubnetName = natIp + "/32"; deleteSubnetInternal(vpcFilter, null, netrisSubnetName); } }