You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by GitBox <gi...@apache.org> on 2021/12/21 14:24:08 UTC

[GitHub] [cloudstack] GutoVeronezi commented on a change in pull request #5757: network: update ip in lb/pf/dnat tables when update vm nic ip

GutoVeronezi commented on a change in pull request #5757:
URL: https://github.com/apache/cloudstack/pull/5757#discussion_r773176160



##########
File path: server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
##########
@@ -1826,6 +1801,45 @@ public void doInTransactionWithoutResult(TransactionStatus status) {
         return vm;
     }
 
+    private void updatePublicIpDnatVmIp(long vmId, long networkId, String oldIp, String newIp) {
+        if (_networkModel.areServicesSupportedInNetwork(networkId, Service.StaticNat)) {
+            List<IPAddressVO> publicIps = _ipAddressDao.listByAssociatedVmId(vmId);
+            for (IPAddressVO publicIp : publicIps) {
+                if (oldIp.equals(publicIp.getVmIp()) && publicIp.getAssociatedWithNetworkId() == networkId) {
+                    publicIp.setVmIp(newIp);
+                    _ipAddressDao.persist(publicIp);
+                }
+            }
+        }

Review comment:
       We could invert the `if` logic and add a return to reduce indentation.

##########
File path: server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
##########
@@ -1826,6 +1801,45 @@ public void doInTransactionWithoutResult(TransactionStatus status) {
         return vm;
     }
 
+    private void updatePublicIpDnatVmIp(long vmId, long networkId, String oldIp, String newIp) {
+        if (_networkModel.areServicesSupportedInNetwork(networkId, Service.StaticNat)) {
+            List<IPAddressVO> publicIps = _ipAddressDao.listByAssociatedVmId(vmId);
+            for (IPAddressVO publicIp : publicIps) {
+                if (oldIp.equals(publicIp.getVmIp()) && publicIp.getAssociatedWithNetworkId() == networkId) {
+                    publicIp.setVmIp(newIp);
+                    _ipAddressDao.persist(publicIp);
+                }
+            }
+        }
+    }
+
+    private void updateLoadBalancerRulesVmIp(long vmId, long networkId, String oldIp, String newIp) {
+        if (_networkModel.areServicesSupportedInNetwork(networkId, Service.Lb)) {
+            List<LoadBalancerVMMapVO> loadBalancerVMMaps = _loadBalancerVMMapDao.listByInstanceId(vmId);
+            for (LoadBalancerVMMapVO map : loadBalancerVMMaps) {
+                long lbId = map.getLoadBalancerId();
+                FirewallRuleVO rule = _rulesDao.findById(lbId);
+                if (oldIp.equals(map.getInstanceIp()) && networkId == rule.getNetworkId()) {
+                    map.setInstanceIp(newIp);
+                    _loadBalancerVMMapDao.persist(map);
+                }
+            }
+        }
+    }
+
+    private void updatePortForwardingRulesVmIp(long vmId, long networkId, String oldIp, String newIp) {
+        if (_networkModel.areServicesSupportedInNetwork(networkId, Service.PortForwarding)) {
+            List<PortForwardingRuleVO> firewallRules = _portForwardingDao.listByVm(vmId);
+            for (PortForwardingRuleVO firewallRule : firewallRules) {
+                FirewallRuleVO rule = _rulesDao.findById(firewallRule.getId());
+                if (oldIp.equals(firewallRule.getDestinationIpAddress().toString()) && networkId == rule.getNetworkId()) {
+                    firewallRule.setDestinationIpAddress(new Ip(newIp));
+                    _portForwardingDao.persist(firewallRule);
+                }
+            }
+        }

Review comment:
       We could invert the `if` logic and add a return to reduce indentation.

##########
File path: server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
##########
@@ -1826,6 +1801,45 @@ public void doInTransactionWithoutResult(TransactionStatus status) {
         return vm;
     }
 
+    private void updatePublicIpDnatVmIp(long vmId, long networkId, String oldIp, String newIp) {
+        if (_networkModel.areServicesSupportedInNetwork(networkId, Service.StaticNat)) {
+            List<IPAddressVO> publicIps = _ipAddressDao.listByAssociatedVmId(vmId);
+            for (IPAddressVO publicIp : publicIps) {
+                if (oldIp.equals(publicIp.getVmIp()) && publicIp.getAssociatedWithNetworkId() == networkId) {
+                    publicIp.setVmIp(newIp);
+                    _ipAddressDao.persist(publicIp);
+                }
+            }
+        }
+    }
+
+    private void updateLoadBalancerRulesVmIp(long vmId, long networkId, String oldIp, String newIp) {
+        if (_networkModel.areServicesSupportedInNetwork(networkId, Service.Lb)) {
+            List<LoadBalancerVMMapVO> loadBalancerVMMaps = _loadBalancerVMMapDao.listByInstanceId(vmId);
+            for (LoadBalancerVMMapVO map : loadBalancerVMMaps) {
+                long lbId = map.getLoadBalancerId();
+                FirewallRuleVO rule = _rulesDao.findById(lbId);
+                if (oldIp.equals(map.getInstanceIp()) && networkId == rule.getNetworkId()) {
+                    map.setInstanceIp(newIp);
+                    _loadBalancerVMMapDao.persist(map);
+                }
+            }
+        }

Review comment:
       We could invert the `if` logic and add a return to reduce indentation.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@cloudstack.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org