diff --git a/server/src/com/cloud/api/commands/UpdateVMCmd.java b/server/src/com/cloud/api/commands/UpdateVMCmd.java index ff788e42e51..a6903097c1c 100644 --- a/server/src/com/cloud/api/commands/UpdateVMCmd.java +++ b/server/src/com/cloud/api/commands/UpdateVMCmd.java @@ -66,11 +66,7 @@ public class UpdateVMCmd extends BaseCmd{ // default userId to SYSTEM user if (userId == null) { userId = Long.valueOf(1); - } - - //don't accept empty parameter for the group - if (group != null && group.isEmpty()) - group = null; + } // Verify input parameters try { diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index d94d221c5c9..33410c61a32 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -2804,9 +2804,14 @@ public class ManagementServerImpl implements ManagementServer { } if (group != null) { - boolean addToGroup = _vmMgr.addInstanceToGroup(Long.valueOf(vmId), group); - if (!addToGroup) { - throw new CloudRuntimeException("Unable to update Vm with the the group " + group); + if (group.isEmpty()) { + _vmMgr.removeInstanceFromGroup(vmId); + } + else { + boolean addToGroup = _vmMgr.addInstanceToGroup(Long.valueOf(vmId), group); + if (!addToGroup) { + throw new CloudRuntimeException("Unable to update Vm with the the group " + group); + } } } diff --git a/server/src/com/cloud/vm/UserVmManager.java b/server/src/com/cloud/vm/UserVmManager.java index 6c70f3c3f42..7e8a3919d22 100644 --- a/server/src/com/cloud/vm/UserVmManager.java +++ b/server/src/com/cloud/vm/UserVmManager.java @@ -232,5 +232,7 @@ public interface UserVmManager extends Manager, VirtualMachineManager boolean addInstanceToGroup(long userVmId, String group); InstanceGroupVO getGroupForVm(long vmId); + + void removeInstanceFromGroup(long vmId); } diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 01c1181e2f8..44b834374c2 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -3154,6 +3154,7 @@ public class UserVmManagerImpl implements UserVmManager { } } + @Override public void removeInstanceFromGroup(long vmId) { try { List groupVmMaps = _groupVMMapDao.listByInstanceId(vmId);