Updated Branches:
  refs/heads/add_remove_nics ea7fbd6b4 -> 52c35a89a

Summary: Check network for same DNS name when adding VM to network

Detail: Can't add VM of same name to network where name already exists, will
break DNS in virtual router.

Submittted-by: Brian Angus <blan...@betterservers.com>
Signed-off-by: Marcus Sorensen <mar...@betterservers.com> 1359400901 -0700


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/52c35a89
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/52c35a89
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/52c35a89

Branch: refs/heads/add_remove_nics
Commit: 52c35a89a6e3445d9e20cf16c914da04ae17780d
Parents: ea7fbd6
Author: Marcus Sorensen <mar...@betterservers.com>
Authored: Mon Jan 28 12:21:41 2013 -0700
Committer: Marcus Sorensen <mar...@betterservers.com>
Committed: Mon Jan 28 12:21:41 2013 -0700

----------------------------------------------------------------------
 server/src/com/cloud/vm/UserVmManagerImpl.java |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/52c35a89/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java 
b/server/src/com/cloud/vm/UserVmManagerImpl.java
index 2ab88e2..692cf4a 100644
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -960,9 +960,17 @@ public class UserVmManagerImpl implements UserVmManager, 
UserVmService, Manager
 
         if(_networkModel.getNicInNetwork(vmInstance.getId(),network.getId()) 
!= null){
             s_logger.debug(vmInstance + " already in " + network + " going to 
add another NIC");
+        } else {
+            List<NicVO> nics = _nicDao.listByNetworkId(network.getId());
+            for (NicVO netnic : nics) {
+                VMInstanceVO vm = _vmDao.findById(netnic.getInstanceId());
+                if (vm != null) {
+                    if (vm.getHostName().equals(vmInstance.getHostName())) {
+                        throw new CloudRuntimeException(network + " already 
has a vm with host name: '" + vmInstance.getHostName() + "' vmId:" + vm.getId() 
+ " " + vm);
+                    }
+                }
+            }
         }
-
-        //todo: verify unique hostname in network domain?
         
         NicProfile guestNic = null;
 
@@ -1075,7 +1083,7 @@ public class UserVmManagerImpl implements UserVmManager, 
UserVmService, Manager
         }
 
         //make sure the VM is Running or Stopped
-        if ((vmInstance.getState() != State.Running) || (vmInstance.getState() 
!= State.Stopped)) {
+        if ((vmInstance.getState() != State.Running) && (vmInstance.getState() 
!= State.Stopped)) {
             throw new CloudRuntimeException("refusing to set default " + 
vmInstance + " is not Running or Stopped");
         }
         

Reply via email to