You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ro...@apache.org on 2019/05/31 06:54:04 UTC

[cloudstack] branch 4.11 updated: server: update dhcp configurations in vrs while update default nic of running vms (#3205)

This is an automated email from the ASF dual-hosted git repository.

rohit pushed a commit to branch 4.11
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.11 by this push:
     new bd78030  server: update dhcp configurations in vrs while update default nic of running vms (#3205)
bd78030 is described below

commit bd780303853132c696cf8e2ab20d9e1641fd5a25
Author: ustcweizhou <us...@gmail.com>
AuthorDate: Fri May 31 08:53:55 2019 +0200

    server: update dhcp configurations in vrs while update default nic of running vms (#3205)
    
    In virtual routers, there are different dnsmasq settings for default nic and non-default nic on vm.
    We need to update dhcp informations on network vrs when default nic is changed.
    
    For example, if 172.16.1.135 is non-default nic of vm VPC1-001-001, then
    
    root@r-22-VM:~# cat /etc/dhcphosts.txt
    02:00:1d:15:00:05,set:172_16_1_135,172.16.1.135,VPC1-001-001,710h
    root@r-22-VM:~# cat /etc/dhcpopts.txt
    172_16_1_135,3
    172_16_1_135,6
    172_16_1_135,15
    
    If it is default nic,then
    
    root@r-22-VM:~# cat /etc/dhcpopts.txt
    root@r-22-VM:~# cat /etc/dhcphosts.txt
    02:00:1d:15:00:05,172.16.1.135,VPC1-001-001,757h
    
    Fixes #3201
---
 server/src/com/cloud/vm/UserVmManagerImpl.java | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java
index 7ba282f..8857fe9 100644
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -1448,6 +1448,19 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
                     newNetworkOfferingId, null, 0L, VirtualMachine.class.getName(), vmInstance.getUuid(), vmInstance.isDisplay());
             UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NETWORK_OFFERING_ASSIGN, vmInstance.getAccountId(), vmInstance.getDataCenterId(), vmInstance.getId(),
                     oldNicIdString, oldNetworkOfferingId, null, 0L, VirtualMachine.class.getName(), vmInstance.getUuid(), vmInstance.isDisplay());
+
+            if (vmInstance.getState() != State.Stopped) {
+                try {
+                    VirtualMachineProfile vmProfile = new VirtualMachineProfileImpl(vmInstance);
+                    User callerUser = _accountMgr.getActiveUser(CallContext.current().getCallingUserId());
+                    ReservationContext context = new ReservationContextImpl(null, null, callerUser, caller);
+                    DeployDestination dest = new DeployDestination(dc, null, null, null);
+                    _networkMgr.prepare(vmProfile, dest, context);
+                } catch (final Exception e) {
+                    s_logger.info("Got exception: ", e);
+                }
+            }
+
             return _vmDao.findById(vmInstance.getId());
         }