diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java index 3aa7b4646a0..28ca164b0a5 100644 --- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java @@ -44,6 +44,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -3984,7 +3985,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir return defaultNetwork; } - protected NetworkVO createDefaultNetworkForAccount(DataCenter zone, Account owner, List requiredOfferings) + private NetworkVO createDefaultNetworkForAccount(DataCenter zone, Account owner, List requiredOfferings) throws InsufficientCapacityException, ResourceAllocationException { NetworkVO defaultNetwork = null; long physicalNetworkId = _networkModel.findPhysicalNetworkId(zone.getId(), requiredOfferings.get(0).getTags(), requiredOfferings.get(0).getTrafficType()); @@ -7591,7 +7592,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir updateVmOwner(newAccount, vm, domainId, newAccountId); updateVolumesOwner(volumes, oldAccount, newAccount, newAccountId); - MutableBoolean isNetworkAutoCreated = new MutableBoolean(false); + AtomicBoolean isNetworkAutoCreated = new AtomicBoolean(false); try { updateVmNetwork(cmd, caller, vm, newAccount, template, isNetworkAutoCreated); } catch (InsufficientCapacityException | ResourceAllocationException e) { @@ -7662,7 +7663,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir * @throws InsufficientCapacityException * @throws ResourceAllocationException */ - protected void updateVmNetwork(AssignVMCmd cmd, Account caller, UserVmVO vm, Account newAccount, VirtualMachineTemplate template, MutableBoolean isNetworkAutoCreated) + protected void updateVmNetwork(AssignVMCmd cmd, Account caller, UserVmVO vm, Account newAccount, VirtualMachineTemplate template, AtomicBoolean isNetworkAutoCreated) throws InsufficientCapacityException, ResourceAllocationException { logger.trace("Updating network for VM [{}].", vm); @@ -7791,7 +7792,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir * @throws InvalidParameterValueException */ protected void updateAdvancedTypeNetworkForVm(AssignVMCmd cmd, Account caller, UserVmVO vm, Account newAccount, VirtualMachineTemplate template, - VirtualMachineProfileImpl vmOldProfile, DataCenterVO zone, List networkIdList, List securityGroupIdList, MutableBoolean isNetworkAutoCreated) + VirtualMachineProfileImpl vmOldProfile, DataCenterVO zone, List networkIdList, List securityGroupIdList, AtomicBoolean isNetworkAutoCreated) throws InsufficientCapacityException, ResourceAllocationException, InvalidParameterValueException { LinkedHashSet applicableNetworks = new LinkedHashSet<>(); @@ -7947,7 +7948,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir * @throws ResourceAllocationException */ protected void selectApplicableNetworkToCreateVm(Account caller, Account newAccount, DataCenterVO zone, - Set applicableNetworks, MutableBoolean isNetworkAutoCreated) + Set applicableNetworks, AtomicBoolean isNetworkAutoCreated) throws InsufficientCapacityException, ResourceAllocationException { logger.trace("Selecting the applicable network to create the VM."); @@ -9167,12 +9168,4 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir vm.setVncPassword(customParameters.get(VmDetailConstants.KVM_VNC_PASSWORD)); } } - - public static class MutableBoolean { - private boolean value; - public MutableBoolean(boolean val) { this.value = val; } - public void set(boolean val) { this.value = val; } - public boolean get() { return this.value; } - } - } diff --git a/server/src/test/java/com/cloud/vm/UserVmManagerImplTest.java b/server/src/test/java/com/cloud/vm/UserVmManagerImplTest.java index 5093d37a2bc..591bad37096 100644 --- a/server/src/test/java/com/cloud/vm/UserVmManagerImplTest.java +++ b/server/src/test/java/com/cloud/vm/UserVmManagerImplTest.java @@ -36,12 +36,10 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.when; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import com.cloud.network.Networks; import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.SecurityChecker; import org.apache.cloudstack.api.BaseCmd.HTTPMethod; @@ -142,6 +140,8 @@ import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.LinkedList; +import java.util.concurrent.atomic.AtomicBoolean; + import com.cloud.domain.DomainVO; import com.cloud.domain.dao.DomainDao; import com.cloud.event.UsageEventUtils; @@ -1975,7 +1975,7 @@ public class UserVmManagerImplTest { Mockito.doNothing().when(userVmManagerImpl).updateBasicTypeNetworkForVm(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any()); - UserVmManagerImpl.MutableBoolean isNetworkCreated = Mockito.mock(UserVmManagerImpl.MutableBoolean.class); + AtomicBoolean isNetworkCreated = Mockito.mock(AtomicBoolean.class); userVmManagerImpl.updateVmNetwork(assignVmCmdMock, callerAccount, userVmVoMock, accountMock, virtualMachineTemplateMock, isNetworkCreated); Mockito.verify(userVmManagerImpl).updateBasicTypeNetworkForVm(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), @@ -1989,7 +1989,7 @@ public class UserVmManagerImplTest { Mockito.doNothing().when(userVmManagerImpl).updateAdvancedTypeNetworkForVm(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any()); - UserVmManagerImpl.MutableBoolean isNetworkCreated = Mockito.mock(UserVmManagerImpl.MutableBoolean.class); + AtomicBoolean isNetworkCreated = Mockito.mock(AtomicBoolean.class); userVmManagerImpl.updateVmNetwork(assignVmCmdMock, callerAccount, userVmVoMock, accountMock, virtualMachineTemplateMock, isNetworkCreated); @@ -2083,7 +2083,7 @@ public class UserVmManagerImplTest { NetworkOffering.Availability.Required); HashSet applicableNetworks = new HashSet(); LinkedList requiredOfferings = new LinkedList(); - UserVmManagerImpl.MutableBoolean isNetworkCreated = new UserVmManagerImpl.MutableBoolean(false); + AtomicBoolean isNetworkCreated = Mockito.mock(AtomicBoolean.class); Mockito.doReturn(requiredOfferings).when(networkOfferingDaoMock).listByAvailability(NetworkOffering.Availability.Required, false); @@ -2106,7 +2106,7 @@ public class UserVmManagerImplTest { Mockito.doReturn(1l).when(networkOfferingVoMock).getId(); - UserVmManagerImpl.MutableBoolean isNetworkCreated = new UserVmManagerImpl.MutableBoolean(false); + AtomicBoolean isNetworkCreated = Mockito.mock(AtomicBoolean.class); InvalidParameterValueException assertThrows = Assert.assertThrows(expectedInvalidParameterValueException, () -> { userVmManagerImpl.selectApplicableNetworkToCreateVm(callerAccount, accountMock, _dcMock, applicableNetworks, isNetworkCreated); }); @@ -2129,7 +2129,7 @@ public class UserVmManagerImplTest { Mockito.doReturn(networkMock).when(userVmManagerImpl).createApplicableNetworkToCreateVm(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any()); - UserVmManagerImpl.MutableBoolean isNetworkCreated = Mockito.mock(UserVmManagerImpl.MutableBoolean.class); + AtomicBoolean isNetworkCreated = Mockito.mock(AtomicBoolean.class); userVmManagerImpl.selectApplicableNetworkToCreateVm(callerAccount, accountMock, _dcMock, applicableNetworks, isNetworkCreated); Mockito.verify(userVmManagerImpl).createApplicableNetworkToCreateVm(callerAccount, accountMock, _dcMock, networkOfferingVoMock); @@ -2150,7 +2150,7 @@ public class UserVmManagerImplTest { virtualNetworks.add(networkMock); virtualNetworks.add(networkMock); - UserVmManagerImpl.MutableBoolean isNetworkCreated = Mockito.mock(UserVmManagerImpl.MutableBoolean.class); + AtomicBoolean isNetworkCreated = Mockito.mock(AtomicBoolean.class); InvalidParameterValueException assertThrows = Assert.assertThrows(expectedInvalidParameterValueException, () -> { userVmManagerImpl.selectApplicableNetworkToCreateVm(callerAccount, accountMock, _dcMock, applicableNetworks, isNetworkCreated); }); @@ -2172,7 +2172,7 @@ public class UserVmManagerImplTest { Mockito.doReturn(1).when(networkVoListMock).size(); Mockito.doReturn(networkMock).when(networkVoListMock).get(0); - UserVmManagerImpl.MutableBoolean isNetworkCreated = Mockito.mock(UserVmManagerImpl.MutableBoolean.class); + AtomicBoolean isNetworkCreated = Mockito.mock(AtomicBoolean.class); userVmManagerImpl.selectApplicableNetworkToCreateVm(callerAccount, accountMock, _dcMock, applicableNetworks, isNetworkCreated); Mockito.verify(_networkDao).findById(Mockito.anyLong()); @@ -2734,7 +2734,7 @@ public class UserVmManagerImplTest { Mockito.doReturn(true).when(networkModel).checkSecurityGroupSupportForNetwork(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any()); - UserVmManagerImpl.MutableBoolean isNetworkCreated = Mockito.mock(UserVmManagerImpl.MutableBoolean.class); + AtomicBoolean isNetworkCreated = Mockito.mock(AtomicBoolean.class); InvalidParameterValueException assertThrows = Assert.assertThrows(expectedInvalidParameterValueException, () -> { userVmManagerImpl.updateAdvancedTypeNetworkForVm(assignVmCmdMock, callerAccount, userVmVoMock, accountMock, virtualMachineTemplateMock, virtualMachineProfileMock, _dcMock, networkIdList, securityGroupIdList, isNetworkCreated); @@ -2757,7 +2757,7 @@ public class UserVmManagerImplTest { Mockito.doReturn(true).when(networkModel).checkSecurityGroupSupportForNetwork(accountMock, _dcMock, networkIdList, securityGroupIdList); - UserVmManagerImpl.MutableBoolean isNetworkCreated = Mockito.mock(UserVmManagerImpl.MutableBoolean.class); + AtomicBoolean isNetworkCreated = Mockito.mock(AtomicBoolean.class); userVmManagerImpl.updateAdvancedTypeNetworkForVm(assignVmCmdMock, callerAccount, userVmVoMock, accountMock, virtualMachineTemplateMock, virtualMachineProfileMock, _dcMock, networkIdList, securityGroupIdList, isNetworkCreated); @@ -2776,7 +2776,7 @@ public class UserVmManagerImplTest { Mockito.doReturn(false).when(networkModel).checkSecurityGroupSupportForNetwork(accountMock, _dcMock, networkIdList, securityGroupIdList); - UserVmManagerImpl.MutableBoolean isNetworkCreated = Mockito.mock(UserVmManagerImpl.MutableBoolean.class); + AtomicBoolean isNetworkCreated = Mockito.mock(AtomicBoolean.class); InvalidParameterValueException assertThrows = Assert.assertThrows(expectedInvalidParameterValueException, () -> { userVmManagerImpl.updateAdvancedTypeNetworkForVm(assignVmCmdMock, callerAccount, userVmVoMock, accountMock, virtualMachineTemplateMock, virtualMachineProfileMock, _dcMock, networkIdList, securityGroupIdList, isNetworkCreated); @@ -2798,7 +2798,7 @@ public class UserVmManagerImplTest { Mockito.doReturn(false).when(networkModel).checkSecurityGroupSupportForNetwork(accountMock, _dcMock, networkIdList, securityGroupIdList); Mockito.doReturn(true).when(securityGroupIdList).isEmpty(); - UserVmManagerImpl.MutableBoolean isNetworkCreated = Mockito.mock(UserVmManagerImpl.MutableBoolean.class); + AtomicBoolean isNetworkCreated = Mockito.mock(AtomicBoolean.class); userVmManagerImpl.updateAdvancedTypeNetworkForVm(assignVmCmdMock, callerAccount, userVmVoMock, accountMock, virtualMachineTemplateMock, virtualMachineProfileMock, _dcMock, networkIdList, securityGroupIdList, isNetworkCreated); @@ -2822,7 +2822,7 @@ public class UserVmManagerImplTest { Mockito.doReturn(networkMock).when(_networkDao).findById(Mockito.anyLong()); Mockito.doReturn(true).when(userVmManagerImpl).canAccountUseNetwork(accountMock, networkMock); - UserVmManagerImpl.MutableBoolean isNetworkCreated = Mockito.mock(UserVmManagerImpl.MutableBoolean.class); + AtomicBoolean isNetworkCreated = Mockito.mock(AtomicBoolean.class); userVmManagerImpl.updateAdvancedTypeNetworkForVm(assignVmCmdMock, callerAccount, userVmVoMock, accountMock, virtualMachineTemplateMock, virtualMachineProfileMock, _dcMock, networkIdList, securityGroupIdList, isNetworkCreated);