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);
     }
 }

Reply via email to