From 4eba6d10d75d24a7d4b62fecd18cc078d1b511ae Mon Sep 17 00:00:00 2001 From: Alex Huang Date: Tue, 4 Jan 2011 08:43:55 -0800 Subject: [PATCH] Moved State into VirtualMachine like other States of objects --- .../computing/LibvirtComputingResource.java | 29 ++-- .../api/response/DomainRouterResponse.java | 3 +- api/src/com/cloud/storage/Volume.java | 17 ++- api/src/com/cloud/vm/State.java | 115 --------------- api/src/com/cloud/vm/VirtualMachine.java | 93 ++++++++++++ .../com/cloud/agent/api/CheckStateAnswer.java | 2 +- .../agent/api/CheckVirtualMachineAnswer.java | 2 +- .../cloud/agent/api/PingRoutingCommand.java | 2 +- .../api/PingRoutingWithNwGroupsCommand.java | 8 +- .../agent/api/StartupRoutingCommand.java | 3 +- .../kvm/resource/KvmDummyResourceBase.java | 3 +- .../xen/resource/CitrixResourceBase.java | 2 +- .../security/SecurityGroupVMMapVO.java | 14 +- core/src/com/cloud/vm/VMInstanceVO.java | 19 +-- .../com/cloud/agent/manager/AgentMonitor.java | 3 +- .../impl/UserConcentratedAllocator.java | 27 ++-- .../src/com/cloud/api/ApiResponseHelper.java | 2 +- .../cloud/async/executor/StopVMExecutor.java | 136 ------------------ .../ConfigurationManagerImpl.java | 2 +- .../consoleproxy/ConsoleProxyManagerImpl.java | 2 +- .../cloud/ha/CheckOnAgentInvestigator.java | 2 +- server/src/com/cloud/ha/HaWorkVO.java | 2 +- .../cloud/ha/HighAvailabilityManagerImpl.java | 2 +- .../migration/Db20to21MigrationUtil.java | 17 ++- .../src/com/cloud/network/NetworkManager.java | 2 +- .../com/cloud/network/NetworkManagerImpl.java | 4 +- .../network/element/VirtualRouterElement.java | 2 +- .../lb/LoadBalancingRulesManagerImpl.java | 2 +- .../VirtualNetworkApplianceManagerImpl.java | 2 +- .../cloud/network/rules/RulesManagerImpl.java | 3 +- .../security/SecurityGroupManager.java | 2 +- .../security/SecurityGroupManagerImpl.java | 89 +++++++----- .../security/dao/SecurityGroupVMMapDao.java | 2 +- .../dao/SecurityGroupVMMapDaoImpl.java | 3 +- .../resource/DummyHostServerResource.java | 5 +- .../cloud/server/ManagementServerImpl.java | 2 +- .../cloud/stateListener/VMStateListener.java | 2 +- .../com/cloud/storage/StorageManagerImpl.java | 2 +- .../allocator/LocalStoragePoolAllocator.java | 62 ++++---- .../storage/download/DownloadMonitorImpl.java | 2 +- .../SecondaryStorageManagerImpl.java | 2 +- .../storage/upload/UploadMonitorImpl.java | 32 +++-- .../cloud/template/TemplateManagerImpl.java | 10 +- .../src/com/cloud/vm/UserVmManagerImpl.java | 1 + .../com/cloud/vm/VirtualMachineManager.java | 2 +- .../cloud/vm/VirtualMachineManagerImpl.java | 19 ++- .../src/com/cloud/vm/dao/ConsoleProxyDao.java | 8 +- .../com/cloud/vm/dao/ConsoleProxyDaoImpl.java | 21 +-- .../src/com/cloud/vm/dao/DomainRouterDao.java | 2 +- .../com/cloud/vm/dao/DomainRouterDaoImpl.java | 2 +- .../cloud/vm/dao/SecondaryStorageVmDao.java | 7 +- .../vm/dao/SecondaryStorageVmDaoImpl.java | 3 +- server/src/com/cloud/vm/dao/UserVmDao.java | 2 +- .../src/com/cloud/vm/dao/UserVmDaoImpl.java | 8 +- .../src/com/cloud/vm/dao/VMInstanceDao.java | 79 +++++----- .../com/cloud/vm/dao/VMInstanceDaoImpl.java | 3 +- 56 files changed, 394 insertions(+), 500 deletions(-) delete mode 100644 api/src/com/cloud/vm/State.java delete mode 100644 server/src/com/cloud/async/executor/StopVMExecutor.java diff --git a/agent/src/com/cloud/agent/resource/computing/LibvirtComputingResource.java b/agent/src/com/cloud/agent/resource/computing/LibvirtComputingResource.java index 6b74cfa9098..91b1fb19177 100644 --- a/agent/src/com/cloud/agent/resource/computing/LibvirtComputingResource.java +++ b/agent/src/com/cloud/agent/resource/computing/LibvirtComputingResource.java @@ -109,19 +109,18 @@ import com.cloud.agent.api.MirrorCommand; import com.cloud.agent.api.ModifySshKeysCommand; import com.cloud.agent.api.ModifyStoragePoolAnswer; import com.cloud.agent.api.ModifyStoragePoolCommand; -import com.cloud.agent.api.SecurityIngressRuleAnswer; -import com.cloud.agent.api.SecurityIngressRulesCmd; import com.cloud.agent.api.PingCommand; import com.cloud.agent.api.PingRoutingCommand; import com.cloud.agent.api.PingRoutingWithNwGroupsCommand; import com.cloud.agent.api.PingTestCommand; -import com.cloud.agent.api.PrepareForMigrationAnswer; import com.cloud.agent.api.PrepareForMigrationCommand; import com.cloud.agent.api.ReadyAnswer; import com.cloud.agent.api.ReadyCommand; import com.cloud.agent.api.RebootAnswer; import com.cloud.agent.api.RebootCommand; import com.cloud.agent.api.RebootRouterCommand; +import com.cloud.agent.api.SecurityIngressRuleAnswer; +import com.cloud.agent.api.SecurityIngressRulesCmd; import com.cloud.agent.api.StartAnswer; import com.cloud.agent.api.StartCommand; import com.cloud.agent.api.StartupCommand; @@ -144,8 +143,6 @@ import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand; import com.cloud.agent.api.to.NicTO; import com.cloud.agent.api.to.StorageFilerTO; import com.cloud.agent.api.to.VirtualMachineTO; -import com.cloud.agent.api.to.VirtualMachineTO.Monitor; -import com.cloud.agent.api.to.VirtualMachineTO.SshMonitor; import com.cloud.agent.api.to.VolumeTO; import com.cloud.agent.resource.computing.KVMHABase.NfsStoragePool; import com.cloud.agent.resource.computing.KVMHABase.PoolType; @@ -193,8 +190,8 @@ import com.cloud.utils.net.NetUtils; import com.cloud.utils.script.OutputInterpreter; import com.cloud.utils.script.Script; import com.cloud.vm.DiskProfile; -import com.cloud.vm.State; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineName; @@ -3746,8 +3743,9 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv } private boolean destroy_network_rules_for_vm(String vmName) { - if (!_can_bridge_firewall) - return false; + if (!_can_bridge_firewall) { + return false; + } Script cmd = new Script(_securityGroupPath, _timeout, s_logger); cmd.add("destroy_network_rules_for_vm"); cmd.add("--vmname"); @@ -3760,8 +3758,9 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv } private boolean default_network_rules(String vmName, String pubIP, long vmId, String mac) { - if (!_can_bridge_firewall) - return false; + if (!_can_bridge_firewall) { + return false; + } Script cmd = new Script(_securityGroupPath, _timeout, s_logger); cmd.add("default_network_rules"); cmd.add("--vmname", vmName); @@ -3777,8 +3776,9 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv } private boolean default_network_rules_for_systemvm(String vmName) { - if (!_can_bridge_firewall) - return false; + if (!_can_bridge_firewall) { + return false; + } Script cmd = new Script(_securityGroupPath, _timeout, s_logger); cmd.add("default_network_rules_systemvm"); cmd.add("--vmname"); @@ -3791,8 +3791,9 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv } private boolean add_network_rules(String vmName, String vmId, String guestIP, String sig, String seq, String mac, String rules) { - if (!_can_bridge_firewall) - return false; + if (!_can_bridge_firewall) { + return false; + } String newRules = rules.replace(" ", ";"); Script cmd = new Script(_securityGroupPath, _timeout, s_logger); cmd.add("add_network_rules"); diff --git a/api/src/com/cloud/api/response/DomainRouterResponse.java b/api/src/com/cloud/api/response/DomainRouterResponse.java index 532e7e3bcbc..7906e83b5fd 100644 --- a/api/src/com/cloud/api/response/DomainRouterResponse.java +++ b/api/src/com/cloud/api/response/DomainRouterResponse.java @@ -21,7 +21,7 @@ import java.util.Date; import com.cloud.api.ApiConstants; import com.cloud.serializer.Param; -import com.cloud.vm.State; +import com.cloud.vm.VirtualMachine.State; import com.google.gson.annotations.SerializedName; public class DomainRouterResponse extends BaseResponse { @@ -104,6 +104,7 @@ public class DomainRouterResponse extends BaseResponse { private String domainName; + @Override public Long getObjectId() { return getId(); } diff --git a/api/src/com/cloud/storage/Volume.java b/api/src/com/cloud/storage/Volume.java index 49447543832..397d9e9173d 100755 --- a/api/src/com/cloud/storage/Volume.java +++ b/api/src/com/cloud/storage/Volume.java @@ -37,8 +37,8 @@ public interface Volume extends ControlledEntity, BasedOn { Allocated("The volume is allocated but has not been created yet."), Creating("The volume is being created. getPoolId() should reflect the pool where it is being created."), Ready("The volume is ready to be used."), + Used("The volume is used"), Destroy("The volume is set to be desctroyed but can be recovered."), - Expunging("The volume is being destroyed. There's no way to recover."), Destroyed("The volume is destroyed. Should be removed."); String _description; @@ -79,23 +79,22 @@ public interface Volume extends ControlledEntity, BasedOn { s_fsm.addTransition(Creating, Event.OperationRetry, Creating); s_fsm.addTransition(Creating, Event.OperationFailed, Allocated); s_fsm.addTransition(Creating, Event.OperationSucceeded, Ready); - s_fsm.addTransition(Creating, Event.Destroy, Expunging); + s_fsm.addTransition(Creating, Event.Destroy, Destroy); s_fsm.addTransition(Ready, Event.Destroy, Destroy); - s_fsm.addTransition(Destroy, Event.Expunge, Expunging); - s_fsm.addTransition(Destroy, Event.Recover, Ready); - s_fsm.addTransition(Expunging, Event.OperationSucceeded, Destroyed); - s_fsm.addTransition(Expunging, Event.OperationFailed, Destroy); + s_fsm.addTransition(Ready, Event.Start, Used); + s_fsm.addTransition(Destroy, Event.OperationSucceeded, Destroyed); + s_fsm.addTransition(Destroy, Event.OperationFailed, Destroy); + s_fsm.addTransition(Destroy, Event.OperationRetry, Destroy); } } enum Event { Create, + Start, OperationFailed, OperationSucceeded, OperationRetry, - Destroy, - Recover, - Expunge; + Destroy; } enum SourceType { diff --git a/api/src/com/cloud/vm/State.java b/api/src/com/cloud/vm/State.java deleted file mode 100644 index 44789257836..00000000000 --- a/api/src/com/cloud/vm/State.java +++ /dev/null @@ -1,115 +0,0 @@ -/** - * Copyright (C) 2010 Cloud.com, Inc. All rights reserved. - * - * This software is licensed under the GNU General Public License v3 or later. - * - * It is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or any later version. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -package com.cloud.vm; - -import java.util.List; -import java.util.Set; - -import com.cloud.utils.fsm.FiniteState; -import com.cloud.utils.fsm.StateMachine; -import com.cloud.vm.VirtualMachine.Event; - -public enum State implements FiniteState { - Creating(true, "VM is being created"), - Starting(true, "VM is being started. At this state, you should find host id filled which means it's being started on that host."), - Running(false, "VM is running. host id has the host that it is running on."), - Stopping(true, "VM is being stopped. host id has the host that it is being stopped on."), - Stopped(false, "VM is stopped. host id should be null."), - Destroyed(false, "VM is marked for destroy."), - Expunging(true, "VM is being expunged."), - Migrating(true, "VM is being migrated. host id holds to from host"), - Error(false, "VM is in error"), - Unknown(false, "VM state is unknown."); - - private final boolean _transitional; - String _description; - - private State(boolean transitional, String description) { - _transitional = transitional; - _description = description; - } - - @Override - public String getDescription() { - return _description; - } - - public boolean isTransitional() { - return _transitional; - } - - @Override - public State getNextState(VirtualMachine.Event e) { - return s_fsm.getNextState(this, e); - } - - @Override - public List getFromStates(VirtualMachine.Event e) { - return s_fsm.getFromStates(this, e); - } - - @Override - public Set getPossibleEvents() { - return s_fsm.getPossibleEvents(this); - } - - @Override - public StateMachine getStateMachine() { - return s_fsm; - } - - - protected static final StateMachine s_fsm = new StateMachine(); - static { - s_fsm.addTransition(null, VirtualMachine.Event.CreateRequested, State.Creating); - s_fsm.addTransition(State.Creating, VirtualMachine.Event.OperationSucceeded, State.Stopped); - s_fsm.addTransition(State.Creating, VirtualMachine.Event.OperationFailed, State.Error); - s_fsm.addTransition(State.Stopped, VirtualMachine.Event.StartRequested, State.Starting); - s_fsm.addTransition(State.Stopped, VirtualMachine.Event.DestroyRequested, State.Destroyed); - s_fsm.addTransition(State.Error, VirtualMachine.Event.DestroyRequested, State.Destroyed); - s_fsm.addTransition(State.Stopped, VirtualMachine.Event.StopRequested, State.Stopped); - s_fsm.addTransition(State.Stopped, VirtualMachine.Event.AgentReportStopped, State.Stopped); - s_fsm.addTransition(State.Starting, VirtualMachine.Event.OperationRetry, State.Starting); - s_fsm.addTransition(State.Starting, VirtualMachine.Event.OperationSucceeded, State.Running); - s_fsm.addTransition(State.Starting, VirtualMachine.Event.OperationFailed, State.Stopped); - s_fsm.addTransition(State.Starting, VirtualMachine.Event.AgentReportRunning, State.Running); - s_fsm.addTransition(State.Starting, VirtualMachine.Event.AgentReportStopped, State.Stopped); - s_fsm.addTransition(State.Destroyed, VirtualMachine.Event.RecoveryRequested, State.Stopped); - s_fsm.addTransition(State.Destroyed, VirtualMachine.Event.ExpungeOperation, State.Expunging); - s_fsm.addTransition(State.Creating, VirtualMachine.Event.MigrationRequested, State.Destroyed); - s_fsm.addTransition(State.Running, VirtualMachine.Event.MigrationRequested, State.Migrating); - s_fsm.addTransition(State.Running, VirtualMachine.Event.AgentReportRunning, State.Running); - s_fsm.addTransition(State.Running, VirtualMachine.Event.AgentReportStopped, State.Stopped); - s_fsm.addTransition(State.Running, VirtualMachine.Event.StopRequested, State.Stopping); - s_fsm.addTransition(State.Migrating, VirtualMachine.Event.MigrationRequested, State.Migrating); - s_fsm.addTransition(State.Migrating, VirtualMachine.Event.OperationSucceeded, State.Running); - s_fsm.addTransition(State.Migrating, VirtualMachine.Event.OperationFailed, State.Running); - s_fsm.addTransition(State.Migrating, VirtualMachine.Event.MigrationFailedOnSource, State.Running); - s_fsm.addTransition(State.Migrating, VirtualMachine.Event.MigrationFailedOnDest, State.Running); - s_fsm.addTransition(State.Migrating, VirtualMachine.Event.AgentReportRunning, State.Running); - s_fsm.addTransition(State.Migrating, VirtualMachine.Event.AgentReportStopped, State.Stopped); - s_fsm.addTransition(State.Stopping, VirtualMachine.Event.OperationSucceeded, State.Stopped); - s_fsm.addTransition(State.Stopping, VirtualMachine.Event.OperationFailed, State.Running); - s_fsm.addTransition(State.Stopping, VirtualMachine.Event.AgentReportRunning, State.Running); - s_fsm.addTransition(State.Stopping, VirtualMachine.Event.AgentReportStopped, State.Stopped); - s_fsm.addTransition(State.Stopping, VirtualMachine.Event.StopRequested, State.Stopping); - s_fsm.addTransition(State.Expunging, VirtualMachine.Event.OperationFailed, State.Expunging); - s_fsm.addTransition(State.Expunging, VirtualMachine.Event.ExpungeOperation, State.Expunging); - } -} diff --git a/api/src/com/cloud/vm/VirtualMachine.java b/api/src/com/cloud/vm/VirtualMachine.java index d410340d408..c48515d2f07 100755 --- a/api/src/com/cloud/vm/VirtualMachine.java +++ b/api/src/com/cloud/vm/VirtualMachine.java @@ -18,14 +18,107 @@ package com.cloud.vm; import java.util.Date; +import java.util.List; +import java.util.Set; import com.cloud.acl.ControlledEntity; +import com.cloud.utils.fsm.FiniteState; +import com.cloud.utils.fsm.StateMachine; /** * VirtualMachine describes the properties held by a virtual machine * */ public interface VirtualMachine extends RunningOn, ControlledEntity { + public enum State implements FiniteState { + Creating(true, "VM is being created"), + Starting(true, "VM is being started. At this state, you should find host id filled which means it's being started on that host."), + Running(false, "VM is running. host id has the host that it is running on."), + Stopping(true, "VM is being stopped. host id has the host that it is being stopped on."), + Stopped(false, "VM is stopped. host id should be null."), + Destroyed(false, "VM is marked for destroy."), + Expunging(true, "VM is being expunged."), + Migrating(true, "VM is being migrated. host id holds to from host"), + Error(false, "VM is in error"), + Unknown(false, "VM state is unknown."); + + private final boolean _transitional; + String _description; + + private State(boolean transitional, String description) { + _transitional = transitional; + _description = description; + } + + @Override + public String getDescription() { + return _description; + } + + public boolean isTransitional() { + return _transitional; + } + + @Override + public State getNextState(VirtualMachine.Event e) { + return s_fsm.getNextState(this, e); + } + + @Override + public List getFromStates(VirtualMachine.Event e) { + return s_fsm.getFromStates(this, e); + } + + @Override + public Set getPossibleEvents() { + return s_fsm.getPossibleEvents(this); + } + + @Override + public StateMachine getStateMachine() { + return s_fsm; + } + + + protected static final StateMachine s_fsm = new StateMachine(); + static { + s_fsm.addTransition(null, VirtualMachine.Event.CreateRequested, State.Creating); + s_fsm.addTransition(State.Creating, VirtualMachine.Event.OperationSucceeded, State.Stopped); + s_fsm.addTransition(State.Creating, VirtualMachine.Event.OperationFailed, State.Error); + s_fsm.addTransition(State.Stopped, VirtualMachine.Event.StartRequested, State.Starting); + s_fsm.addTransition(State.Stopped, VirtualMachine.Event.DestroyRequested, State.Destroyed); + s_fsm.addTransition(State.Error, VirtualMachine.Event.DestroyRequested, State.Destroyed); + s_fsm.addTransition(State.Stopped, VirtualMachine.Event.StopRequested, State.Stopped); + s_fsm.addTransition(State.Stopped, VirtualMachine.Event.AgentReportStopped, State.Stopped); + s_fsm.addTransition(State.Starting, VirtualMachine.Event.OperationRetry, State.Starting); + s_fsm.addTransition(State.Starting, VirtualMachine.Event.OperationSucceeded, State.Running); + s_fsm.addTransition(State.Starting, VirtualMachine.Event.OperationFailed, State.Stopped); + s_fsm.addTransition(State.Starting, VirtualMachine.Event.AgentReportRunning, State.Running); + s_fsm.addTransition(State.Starting, VirtualMachine.Event.AgentReportStopped, State.Stopped); + s_fsm.addTransition(State.Destroyed, VirtualMachine.Event.RecoveryRequested, State.Stopped); + s_fsm.addTransition(State.Destroyed, VirtualMachine.Event.ExpungeOperation, State.Expunging); + s_fsm.addTransition(State.Creating, VirtualMachine.Event.MigrationRequested, State.Destroyed); + s_fsm.addTransition(State.Running, VirtualMachine.Event.MigrationRequested, State.Migrating); + s_fsm.addTransition(State.Running, VirtualMachine.Event.AgentReportRunning, State.Running); + s_fsm.addTransition(State.Running, VirtualMachine.Event.AgentReportStopped, State.Stopped); + s_fsm.addTransition(State.Running, VirtualMachine.Event.StopRequested, State.Stopping); + s_fsm.addTransition(State.Migrating, VirtualMachine.Event.MigrationRequested, State.Migrating); + s_fsm.addTransition(State.Migrating, VirtualMachine.Event.OperationSucceeded, State.Running); + s_fsm.addTransition(State.Migrating, VirtualMachine.Event.OperationFailed, State.Running); + s_fsm.addTransition(State.Migrating, VirtualMachine.Event.MigrationFailedOnSource, State.Running); + s_fsm.addTransition(State.Migrating, VirtualMachine.Event.MigrationFailedOnDest, State.Running); + s_fsm.addTransition(State.Migrating, VirtualMachine.Event.AgentReportRunning, State.Running); + s_fsm.addTransition(State.Migrating, VirtualMachine.Event.AgentReportStopped, State.Stopped); + s_fsm.addTransition(State.Stopping, VirtualMachine.Event.OperationSucceeded, State.Stopped); + s_fsm.addTransition(State.Stopping, VirtualMachine.Event.OperationFailed, State.Running); + s_fsm.addTransition(State.Stopping, VirtualMachine.Event.AgentReportRunning, State.Running); + s_fsm.addTransition(State.Stopping, VirtualMachine.Event.AgentReportStopped, State.Stopped); + s_fsm.addTransition(State.Stopping, VirtualMachine.Event.StopRequested, State.Stopping); + s_fsm.addTransition(State.Expunging, VirtualMachine.Event.OperationFailed, State.Expunging); + s_fsm.addTransition(State.Expunging, VirtualMachine.Event.ExpungeOperation, State.Expunging); + } + } + public enum Event { CreateRequested, StartRequested, diff --git a/core/src/com/cloud/agent/api/CheckStateAnswer.java b/core/src/com/cloud/agent/api/CheckStateAnswer.java index 359fbf39437..35fce7fbfc3 100755 --- a/core/src/com/cloud/agent/api/CheckStateAnswer.java +++ b/core/src/com/cloud/agent/api/CheckStateAnswer.java @@ -17,7 +17,7 @@ */ package com.cloud.agent.api; -import com.cloud.vm.State; +import com.cloud.vm.VirtualMachine.State; /** * This returns an answer on the state of the VM. If the state, is Error diff --git a/core/src/com/cloud/agent/api/CheckVirtualMachineAnswer.java b/core/src/com/cloud/agent/api/CheckVirtualMachineAnswer.java index 5ff1e41dbd8..23df60dee9d 100644 --- a/core/src/com/cloud/agent/api/CheckVirtualMachineAnswer.java +++ b/core/src/com/cloud/agent/api/CheckVirtualMachineAnswer.java @@ -17,7 +17,7 @@ */ package com.cloud.agent.api; -import com.cloud.vm.State; +import com.cloud.vm.VirtualMachine.State; public class CheckVirtualMachineAnswer extends Answer { diff --git a/core/src/com/cloud/agent/api/PingRoutingCommand.java b/core/src/com/cloud/agent/api/PingRoutingCommand.java index 16e889649b0..4aeee19cc41 100755 --- a/core/src/com/cloud/agent/api/PingRoutingCommand.java +++ b/core/src/com/cloud/agent/api/PingRoutingCommand.java @@ -20,7 +20,7 @@ package com.cloud.agent.api; import java.util.Map; import com.cloud.host.Host; -import com.cloud.vm.State; +import com.cloud.vm.VirtualMachine.State; public class PingRoutingCommand extends PingCommand { Map newStates; diff --git a/core/src/com/cloud/agent/api/PingRoutingWithNwGroupsCommand.java b/core/src/com/cloud/agent/api/PingRoutingWithNwGroupsCommand.java index 8f8f186d03d..09b4748ff91 100644 --- a/core/src/com/cloud/agent/api/PingRoutingWithNwGroupsCommand.java +++ b/core/src/com/cloud/agent/api/PingRoutingWithNwGroupsCommand.java @@ -18,17 +18,13 @@ version. */ package com.cloud.agent.api; -import java.lang.reflect.Type; import java.util.HashMap; -import java.util.Iterator; -import java.util.List; import java.util.Map; -import com.cloud.agent.api.SecStorageFirewallCfgCommand.PortConfig; import com.cloud.agent.transport.Request; import com.cloud.host.Host; import com.cloud.utils.Pair; -import com.cloud.vm.State; +import com.cloud.vm.VirtualMachine.State; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; @@ -37,10 +33,8 @@ import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonNull; import com.google.gson.JsonParseException; -import com.google.gson.JsonPrimitive; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; -import com.google.gson.reflect.TypeToken; public class PingRoutingWithNwGroupsCommand extends PingRoutingCommand { diff --git a/core/src/com/cloud/agent/api/StartupRoutingCommand.java b/core/src/com/cloud/agent/api/StartupRoutingCommand.java index 9126ef0eb55..f55bad47a01 100755 --- a/core/src/com/cloud/agent/api/StartupRoutingCommand.java +++ b/core/src/com/cloud/agent/api/StartupRoutingCommand.java @@ -19,10 +19,9 @@ package com.cloud.agent.api; import java.util.HashMap; import java.util.Map; -import com.cloud.hypervisor.Hypervisor; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.network.NetworkEnums.RouterPrivateIpStrategy; -import com.cloud.vm.State; +import com.cloud.vm.VirtualMachine.State; public class StartupRoutingCommand extends StartupCommand { int cpus; diff --git a/core/src/com/cloud/hypervisor/kvm/resource/KvmDummyResourceBase.java b/core/src/com/cloud/hypervisor/kvm/resource/KvmDummyResourceBase.java index a753c532e02..6b0f43ec22a 100644 --- a/core/src/com/cloud/hypervisor/kvm/resource/KvmDummyResourceBase.java +++ b/core/src/com/cloud/hypervisor/kvm/resource/KvmDummyResourceBase.java @@ -12,10 +12,9 @@ import com.cloud.agent.api.StartupCommand; import com.cloud.agent.api.StartupRoutingCommand; import com.cloud.host.Host.Type; import com.cloud.hypervisor.Hypervisor; -import com.cloud.hypervisor.xen.resource.CitrixResourceBase; import com.cloud.resource.ServerResource; import com.cloud.resource.ServerResourceBase; -import com.cloud.vm.State; +import com.cloud.vm.VirtualMachine.State; public class KvmDummyResourceBase extends ServerResourceBase implements ServerResource { private String _zoneId; diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index 7520cd70028..26109962265 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -176,8 +176,8 @@ import com.cloud.utils.component.ComponentLocator; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.net.NetUtils; import com.cloud.vm.DiskProfile; -import com.cloud.vm.State; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineName; import com.trilead.ssh2.SCPClient; import com.xensource.xenapi.Bond; diff --git a/core/src/com/cloud/network/security/SecurityGroupVMMapVO.java b/core/src/com/cloud/network/security/SecurityGroupVMMapVO.java index 3aa82da72b1..3f28f587ec1 100644 --- a/core/src/com/cloud/network/security/SecurityGroupVMMapVO.java +++ b/core/src/com/cloud/network/security/SecurityGroupVMMapVO.java @@ -18,17 +18,17 @@ package com.cloud.network.security; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; import javax.persistence.PrimaryKeyJoinColumn; import javax.persistence.SecondaryTable; import javax.persistence.SecondaryTables; -import javax.persistence.Table; +import javax.persistence.Table; -import com.cloud.vm.State; +import com.cloud.vm.VirtualMachine.State; @Entity @Table(name=("security_group_vm_map")) diff --git a/core/src/com/cloud/vm/VMInstanceVO.java b/core/src/com/cloud/vm/VMInstanceVO.java index 1ac64b2803d..3714f5778ee 100644 --- a/core/src/com/cloud/vm/VMInstanceVO.java +++ b/core/src/com/cloud/vm/VMInstanceVO.java @@ -39,6 +39,7 @@ import com.cloud.utils.db.GenericDao; import com.cloud.utils.db.StateMachine; import com.cloud.utils.fsm.FiniteStateObject; import com.cloud.utils.fsm.StateObject; +import com.cloud.vm.VirtualMachine.State; @Entity @Table(name="vm_instance") @@ -185,10 +186,11 @@ public class VMInstanceVO implements VirtualMachine, FiniteStateObject -1) - this.templateId = vmTemplateId; - else - this.templateId = null; + if (vmTemplateId > -1) { + this.templateId = vmTemplateId; + } else { + this.templateId = null; + } this.guestOSId = guestOSId; this.privateIpAddress = privateIpAddress; this.privateMacAddress = privateMacAddress; @@ -332,10 +334,11 @@ public class VMInstanceVO implements VirtualMachine, FiniteStateObject _hoursToSkipVMs*3600000L) { - if(s_logger.isDebugEnabled()) - s_logger.debug("Skip counting " + vm.getState().toString() + " vm " + vm.getInstanceName() + " in capacity allocation as it has been " + vm.getState().toString().toLowerCase() + " for " + millisecondsSinceLastUpdate/60000 + " minutes"); + if(s_logger.isDebugEnabled()) { + s_logger.debug("Skip counting " + vm.getState().toString() + " vm " + vm.getInstanceName() + " in capacity allocation as it has been " + vm.getState().toString().toLowerCase() + " for " + millisecondsSinceLastUpdate/60000 + " minutes"); + } return true; } } @@ -233,8 +237,9 @@ public class UserConcentratedAllocator implements PodAllocator { List vms = null; long usedCapacity = 0; for (VMInstanceVO vm : vms) { - if(skipCalculation(vm)) - continue; + if(skipCalculation(vm)) { + continue; + } ServiceOffering so = null; if(vm.getType() == VirtualMachine.Type.User) { diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index fda5f104447..1875b520dd3 100644 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -151,11 +151,11 @@ import com.cloud.vm.InstanceGroup; import com.cloud.vm.InstanceGroupVO; import com.cloud.vm.Nic; import com.cloud.vm.SecondaryStorageVmVO; -import com.cloud.vm.State; import com.cloud.vm.SystemVm; import com.cloud.vm.UserVmVO; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VmStats; public class ApiResponseHelper implements ResponseGenerator { diff --git a/server/src/com/cloud/async/executor/StopVMExecutor.java b/server/src/com/cloud/async/executor/StopVMExecutor.java deleted file mode 100644 index f4acbf41816..00000000000 --- a/server/src/com/cloud/async/executor/StopVMExecutor.java +++ /dev/null @@ -1,136 +0,0 @@ -/** - * Copyright (C) 2010 Cloud.com, Inc. All rights reserved. - * - * This software is licensed under the GNU General Public License v3 or later. - * - * It is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or any later version. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -package com.cloud.async.executor; - -import org.apache.log4j.Logger; - -import com.cloud.agent.api.Answer; -import com.cloud.api.BaseCmd; -import com.cloud.async.AsyncJobManager; -import com.cloud.async.AsyncJobResult; -import com.cloud.async.AsyncJobVO; -import com.cloud.serializer.GsonHelper; -import com.cloud.server.ManagementServer; -import com.cloud.vm.UserVmVO; -import com.cloud.vm.VirtualMachine.Event; -import com.google.gson.Gson; - -public class StopVMExecutor extends VMOperationExecutor { - public static final Logger s_logger = Logger.getLogger(StopVMExecutor.class.getName()); - - public boolean execute() { - Gson gson = GsonHelper.getBuilder().create(); - AsyncJobManager asyncMgr = getAsyncJobMgr(); - AsyncJobVO job = getJob(); - VMOperationParam param = gson.fromJson(job.getCmdInfo(), VMOperationParam.class); - - /* - if(getSyncSource() == null) { - asyncMgr.syncAsyncJobExecution(job.getId(), "UserVM", param.getVmId()); - - // always true if it does not have sync-source - return true; - } else { - ManagementServer managementServer = asyncMgr.getExecutorContext().getManagementServer(); - managementServer.saveStartedEvent(param.getUserId(), param.getAccountId(), EventTypes.EVENT_VM_STOP, - "Stopping Vm with Id: "+param.getVmId(), param.getEventId()); - OperationResponse response = asyncMgr.getExecutorContext().getVmMgr().executeStopVM(this, param); - UserVmVO vm = managementServer.findUserVMInstanceById(param.getVmId()); - String params = "id="+vm.getId() + "\nvmName=" + vm.getName() + "\nsoId=" + vm.getServiceOfferingId() + "\ntId=" + vm.getTemplateId() + "\ndcId=" + vm.getDataCenterId(); - - if (OperationResponse.STATUS_SUCCEEDED == response.getResultCode() ){ - EventUtils.saveEvent(param.getUserId(), param.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_VM_STOP, "Successfully stopped VM instance : " + param.getVmId(), params, param.getEventId()); - return true; - }else if (OperationResponse.STATUS_FAILED == response.getResultCode()){ - EventUtils.saveEvent(param.getUserId(), param.getAccountId(), EventVO.LEVEL_ERROR, EventTypes.EVENT_VM_STOP, "Failed to stop VM instance : " + response.getResultDescription(), params, param.getEventId()); - return true; - } - } - */ - return false; - } - - public void processAnswer(VMOperationListener listener, long agentId, long seq, Answer answer) { - - UserVmVO vm = listener.getVm(); - VMOperationParam param = listener.getParam(); - AsyncJobManager asyncMgr = getAsyncJobMgr(); - if(s_logger.isDebugEnabled()) - s_logger.debug("Execute asynchronize stop VM command: received answer, " + vm.getHostId() + "-" + seq); - - boolean stopped = false; - if(answer != null && answer.getResult()) - stopped = true; - - boolean jobStatusUpdated = false; - try { - if(stopped) { - // completeStopCommand will log the event, if we log it here we will end up with duplicated stop event - asyncMgr.getExecutorContext().getVmMgr().completeStopCommand(param.getUserId(), vm, Event.OperationSucceeded); - asyncMgr.completeAsyncJob(getJob().getId(), - AsyncJobResult.STATUS_SUCCEEDED, 0, VMExecutorHelper.composeResultObject(asyncMgr.getExecutorContext().getManagementServer(), vm, null)); - jobStatusUpdated = true; - } else { - asyncMgr.getExecutorContext().getItMgr().stateTransitTo(vm, Event.OperationFailed, vm.getHostId()); - asyncMgr.completeAsyncJob(getJob().getId(), - AsyncJobResult.STATUS_FAILED, BaseCmd.INTERNAL_ERROR, "Agent failed to stop VM"); - jobStatusUpdated = true; - - } - } catch(Exception e) { - s_logger.error("Unexpected exception " + e.getMessage(), e); - if(!jobStatusUpdated) { - if(stopped) { - asyncMgr.completeAsyncJob(getJob().getId(), - AsyncJobResult.STATUS_SUCCEEDED, 0, VMExecutorHelper.composeResultObject(asyncMgr.getExecutorContext().getManagementServer(), vm, null)); - } else { - asyncMgr.completeAsyncJob(getJob().getId(), - AsyncJobResult.STATUS_FAILED, BaseCmd.INTERNAL_ERROR, "Agent failed to stop VM"); - } - } - } finally { - asyncMgr.releaseSyncSource(this); - } - } - - public void processDisconnect(VMOperationListener listener, long agentId) { - if(s_logger.isDebugEnabled()) - s_logger.debug("Execute asynchronize stop VM command: agent " + agentId + " disconnected"); - - processDisconnectAndTimeout(listener, "agent is disconnected"); - } - - public void processTimeout(VMOperationListener listener, long agentId, long seq) { - if(s_logger.isDebugEnabled()) - s_logger.debug("Execute asynchronize stop VM command: timed out, " + agentId + "-" + seq); - - processDisconnectAndTimeout(listener, "operation timed out"); - } - - private void processDisconnectAndTimeout(VMOperationListener listener, String resultMessage) { - UserVmVO vm = listener.getVm(); - VMOperationParam param = listener.getParam(); - AsyncJobManager asyncMgr = getAsyncJobMgr(); - - asyncMgr.completeAsyncJob(getJob().getId(), - AsyncJobResult.STATUS_FAILED, 0, resultMessage); - - asyncMgr.releaseSyncSource(this); - } -} diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index 9ee3df281b2..9c54adc44f5 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -131,9 +131,9 @@ import com.cloud.utils.net.NetUtils; import com.cloud.vm.ConsoleProxyVO; import com.cloud.vm.DomainRouterVO; import com.cloud.vm.SecondaryStorageVmVO; -import com.cloud.vm.State; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.dao.ConsoleProxyDao; import com.cloud.vm.dao.DomainRouterDao; import com.cloud.vm.dao.SecondaryStorageVmDao; diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index afcfaf43574..80bdc91acd5 100644 --- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -145,9 +145,9 @@ import com.cloud.vm.ConsoleProxyVO; import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; import com.cloud.vm.ReservationContext; -import com.cloud.vm.State; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineGuru; import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.VirtualMachineName; diff --git a/server/src/com/cloud/ha/CheckOnAgentInvestigator.java b/server/src/com/cloud/ha/CheckOnAgentInvestigator.java index 117ad4d8c5b..16c70425eb8 100644 --- a/server/src/com/cloud/ha/CheckOnAgentInvestigator.java +++ b/server/src/com/cloud/ha/CheckOnAgentInvestigator.java @@ -30,8 +30,8 @@ import com.cloud.host.HostVO; import com.cloud.host.Status; import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.Inject; -import com.cloud.vm.State; import com.cloud.vm.VMInstanceVO; +import com.cloud.vm.VirtualMachine.State; @Local(value=Investigator.class) public class CheckOnAgentInvestigator extends AdapterBase implements Investigator { diff --git a/server/src/com/cloud/ha/HaWorkVO.java b/server/src/com/cloud/ha/HaWorkVO.java index ab284a2ac0f..92a3aa1833f 100644 --- a/server/src/com/cloud/ha/HaWorkVO.java +++ b/server/src/com/cloud/ha/HaWorkVO.java @@ -32,8 +32,8 @@ import javax.persistence.TemporalType; import com.cloud.ha.HighAvailabilityManager.Step; import com.cloud.utils.db.GenericDao; -import com.cloud.vm.State; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; @Entity @Table(name="op_ha_work") diff --git a/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java b/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java index 7be40f71b58..5e7c2a68eb4 100644 --- a/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java +++ b/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java @@ -67,10 +67,10 @@ import com.cloud.utils.component.ComponentLocator; import com.cloud.utils.component.Inject; import com.cloud.utils.concurrency.NamedThreadFactory; import com.cloud.utils.db.GlobalLock; -import com.cloud.vm.State; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.Event; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineGuru; import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.dao.VMInstanceDao; diff --git a/server/src/com/cloud/migration/Db20to21MigrationUtil.java b/server/src/com/cloud/migration/Db20to21MigrationUtil.java index 03068dd3784..d95036a9a7e 100644 --- a/server/src/com/cloud/migration/Db20to21MigrationUtil.java +++ b/server/src/com/cloud/migration/Db20to21MigrationUtil.java @@ -61,10 +61,10 @@ import com.cloud.utils.script.Script; import com.cloud.vm.ConsoleProxyVO; import com.cloud.vm.DomainRouterVO; import com.cloud.vm.SecondaryStorageVmVO; -import com.cloud.vm.State; import com.cloud.vm.UserVmVO; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.dao.ConsoleProxyDao; import com.cloud.vm.dao.DomainRouterDao; import com.cloud.vm.dao.SecondaryStorageVmDao; @@ -164,8 +164,9 @@ public class Db20to21MigrationUtil { String gateway = readInput(); pod.setGateway(gateway); _podDao.update(pod.getId(), pod); - if(createCluster) - migrateHostsInPod(zoneId, pod.getId(), pod.getName()); + if(createCluster) { + migrateHostsInPod(zoneId, pod.getId(), pod.getName()); + } System.out.println("Set last_host_id for VMs in pod " + pod.getName()); migrateVmInstanceLastHostId(zoneId, pod.getId()); @@ -689,8 +690,9 @@ public class Db20to21MigrationUtil { vol.setDeviceId(deviceId); // don't use device ID 3 - if(++deviceId == 3) - deviceId++; + if(++deviceId == 3) { + deviceId++; + } } else { System.out.println("Unsupported volume type found for volume: " + vol.getName()); } @@ -728,8 +730,9 @@ public class Db20to21MigrationUtil { System.out.print("Are you migrating from 2.0 Premium Edition? (yes/no): "); String answer = readInput(); - if(answer != null && answer.equalsIgnoreCase("yes")) - _isPremium = true; + if(answer != null && answer.equalsIgnoreCase("yes")) { + _isPremium = true; + } // Save default Configuration Table values List categories = Config.getCategories(); diff --git a/server/src/com/cloud/network/NetworkManager.java b/server/src/com/cloud/network/NetworkManager.java index 7387717e2b7..77aaf7ee0ea 100644 --- a/server/src/com/cloud/network/NetworkManager.java +++ b/server/src/com/cloud/network/NetworkManager.java @@ -115,7 +115,7 @@ public interface NetworkManager extends NetworkService { void allocate(VirtualMachineProfile vm, List> networks) throws InsufficientCapacityException, ConcurrentOperationException; void prepare(VirtualMachineProfile profile, DeployDestination dest, ReservationContext context) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException; - void release(VirtualMachineProfile vmProfile); + void release(VirtualMachineProfile vmProfile, boolean forced); void cleanupNics(VirtualMachineProfile vm); diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index f481f97dee0..883595d9ec5 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -146,9 +146,9 @@ import com.cloud.vm.Nic; import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; import com.cloud.vm.ReservationContext; -import com.cloud.vm.State; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.UserVmDao; @@ -1091,7 +1091,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } @Override - public void release(VirtualMachineProfile vmProfile) { + public void release(VirtualMachineProfile vmProfile, boolean forced) { List nics = _nicDao.listBy(vmProfile.getId()); for (NicVO nic : nics) { NetworkVO network = _networksDao.findById(nic.getNetworkId()); diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java index c6a365c3e9f..8908a82b7b0 100644 --- a/server/src/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VirtualRouterElement.java @@ -61,9 +61,9 @@ import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.DomainRouterVO; import com.cloud.vm.NicProfile; import com.cloud.vm.ReservationContext; -import com.cloud.vm.State; import com.cloud.vm.UserVmManager; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.dao.DomainRouterDao; import com.cloud.vm.dao.UserVmDao; diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index 08d19fad782..255d0fcd1eb 100644 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -75,8 +75,8 @@ import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.net.Ip; import com.cloud.utils.net.NetUtils; import com.cloud.vm.Nic; -import com.cloud.vm.State; import com.cloud.vm.UserVmVO; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.UserVmDao; diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index d09b9735844..615adc0bd56 100644 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -171,9 +171,9 @@ import com.cloud.vm.DomainRouterVO; import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; import com.cloud.vm.ReservationContext; -import com.cloud.vm.State; import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineGuru; import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.VirtualMachineName; diff --git a/server/src/com/cloud/network/rules/RulesManagerImpl.java b/server/src/com/cloud/network/rules/RulesManagerImpl.java index 4d0a605af3f..edd43b431c0 100644 --- a/server/src/com/cloud/network/rules/RulesManagerImpl.java +++ b/server/src/com/cloud/network/rules/RulesManagerImpl.java @@ -57,6 +57,7 @@ import com.cloud.utils.net.Ip; import com.cloud.utils.net.NetUtils; import com.cloud.vm.Nic; import com.cloud.vm.UserVmVO; +import com.cloud.vm.VirtualMachine; import com.cloud.vm.dao.UserVmDao; @Local(value={RulesManager.class, RulesService.class}) @@ -117,7 +118,7 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager { return; } - if (userVm.getState() == com.cloud.vm.State.Destroyed || userVm.getState() == com.cloud.vm.State.Expunging) { + if (userVm.getState() == VirtualMachine.State.Destroyed || userVm.getState() == VirtualMachine.State.Expunging) { throw new InvalidParameterValueException("Invalid user vm: " + userVm.getId()); } diff --git a/server/src/com/cloud/network/security/SecurityGroupManager.java b/server/src/com/cloud/network/security/SecurityGroupManager.java index d516e1890ec..cfb409ad0ff 100644 --- a/server/src/com/cloud/network/security/SecurityGroupManager.java +++ b/server/src/com/cloud/network/security/SecurityGroupManager.java @@ -22,7 +22,7 @@ import java.util.List; import com.cloud.uservm.UserVm; import com.cloud.utils.Pair; -import com.cloud.vm.State; +import com.cloud.vm.VirtualMachine.State; /** * Ensures that network firewall rules stay updated as VMs go up and down diff --git a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java index ff510d651c0..3b53cc03896 100644 --- a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java +++ b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java @@ -83,8 +83,8 @@ import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.net.NetUtils; -import com.cloud.vm.State; import com.cloud.vm.UserVmVO; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.dao.UserVmDao; @Local(value={SecurityGroupManager.class, SecurityGroupService.class}) @@ -181,49 +181,61 @@ public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityG @Override public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } PortAndProto other = (PortAndProto) obj; - if (endPort != other.endPort) - return false; + if (endPort != other.endPort) { + return false; + } if (proto == null) { - if (other.proto != null) - return false; - } else if (!proto.equals(other.proto)) - return false; - if (startPort != other.startPort) - return false; + if (other.proto != null) { + return false; + } + } else if (!proto.equals(other.proto)) { + return false; + } + if (startPort != other.startPort) { + return false; + } return true; } @Override public int compareTo(PortAndProto obj) { - if (this == obj) - return 0; - if (obj == null) - return 1; + if (this == obj) { + return 0; + } + if (obj == null) { + return 1; + } if (proto == null) { - if (obj.proto != null) - return -1; - else - return 0; + if (obj.proto != null) { + return -1; + } else { + return 0; + } } if (!obj.proto.equalsIgnoreCase(proto)) { return proto.compareTo(obj.proto); } - if (startPort < obj.startPort) - return -1; - else if (startPort > obj.startPort) - return 1; + if (startPort < obj.startPort) { + return -1; + } else if (startPort > obj.startPort) { + return 1; + } - if (endPort < obj.endPort) - return -1; - else if (endPort > obj.endPort) - return 1; + if (endPort < obj.endPort) { + return -1; + } else if (endPort > obj.endPort) { + return 1; + } return 0; } @@ -289,8 +301,9 @@ public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityG }else if (rule.getAllowedSourceIpCidr() != null) { cidrs.add(rule.getAllowedSourceIpCidr()); } - if (cidrs.size() > 0) - allowed.put(portAndProto, cidrs); + if (cidrs.size() > 0) { + allowed.put(portAndProto, cidrs); + } } } @@ -313,8 +326,9 @@ public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityG if (!_enabled) { return; } - if (delayMs == null) - delayMs = new Long(100l); + if (delayMs == null) { + delayMs = new Long(100l); + } for (Long vmId: affectedVms) { Transaction txn = Transaction.currentTxn(); @@ -1258,8 +1272,9 @@ public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityG if(id != null){ SecurityGroupRulesVO secGrp = _securityGroupRulesDao.findById(id); - if(secGrp != null) - securityRulesList.add(secGrp); + if(secGrp != null) { + securityRulesList.add(secGrp); + } return securityRulesList; } diff --git a/server/src/com/cloud/network/security/dao/SecurityGroupVMMapDao.java b/server/src/com/cloud/network/security/dao/SecurityGroupVMMapDao.java index 42059768a72..488ff61acb6 100644 --- a/server/src/com/cloud/network/security/dao/SecurityGroupVMMapDao.java +++ b/server/src/com/cloud/network/security/dao/SecurityGroupVMMapDao.java @@ -22,7 +22,7 @@ import java.util.List; import com.cloud.network.security.SecurityGroupVMMapVO; import com.cloud.utils.db.GenericDao; -import com.cloud.vm.State; +import com.cloud.vm.VirtualMachine.State; public interface SecurityGroupVMMapDao extends GenericDao { List listByIpAndInstanceId(String ipAddress, long instanceId); diff --git a/server/src/com/cloud/network/security/dao/SecurityGroupVMMapDaoImpl.java b/server/src/com/cloud/network/security/dao/SecurityGroupVMMapDaoImpl.java index 5dd8b3483e4..822d6e64927 100644 --- a/server/src/com/cloud/network/security/dao/SecurityGroupVMMapDaoImpl.java +++ b/server/src/com/cloud/network/security/dao/SecurityGroupVMMapDaoImpl.java @@ -27,7 +27,7 @@ import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.GenericSearchBuilder; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; -import com.cloud.vm.State; +import com.cloud.vm.VirtualMachine.State; @Local(value={SecurityGroupVMMapDao.class}) public class SecurityGroupVMMapDaoImpl extends GenericDaoBase implements SecurityGroupVMMapDao { @@ -75,6 +75,7 @@ public class SecurityGroupVMMapDaoImpl extends GenericDaoBase listByIpAndInstanceId(String ipAddress, long vmId) { SearchCriteria sc = ListByIpAndVmId.create(); sc.setParameters("ipAddress", ipAddress); diff --git a/server/src/com/cloud/resource/DummyHostServerResource.java b/server/src/com/cloud/resource/DummyHostServerResource.java index 0c880910423..401dc711673 100644 --- a/server/src/com/cloud/resource/DummyHostServerResource.java +++ b/server/src/com/cloud/resource/DummyHostServerResource.java @@ -30,10 +30,9 @@ import com.cloud.agent.api.PingRoutingCommand; import com.cloud.agent.api.StartupCommand; import com.cloud.agent.api.StartupRoutingCommand; import com.cloud.host.Host.Type; -import com.cloud.hypervisor.Hypervisor; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.utils.net.MacAddress; -import com.cloud.vm.State; +import com.cloud.vm.VirtualMachine; public class DummyHostServerResource extends ServerResourceBase { @@ -59,7 +58,7 @@ public class DummyHostServerResource extends ServerResourceBase { @Override public PingCommand getCurrentStatus(long id) { - HashMap newStates = new HashMap(); + HashMap newStates = new HashMap(); return new PingRoutingCommand(com.cloud.host.Host.Type.Routing, id, newStates); } diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index b453d8916d8..e77a7661fcf 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -253,11 +253,11 @@ import com.cloud.vm.ConsoleProxyVO; import com.cloud.vm.DomainRouterVO; import com.cloud.vm.InstanceGroupVO; import com.cloud.vm.SecondaryStorageVmVO; -import com.cloud.vm.State; import com.cloud.vm.UserVmManager; import com.cloud.vm.UserVmVO; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.dao.ConsoleProxyDao; import com.cloud.vm.dao.DomainRouterDao; import com.cloud.vm.dao.InstanceGroupDao; diff --git a/server/src/com/cloud/stateListener/VMStateListener.java b/server/src/com/cloud/stateListener/VMStateListener.java index 7d91b6098ac..762f4b4101e 100644 --- a/server/src/com/cloud/stateListener/VMStateListener.java +++ b/server/src/com/cloud/stateListener/VMStateListener.java @@ -33,10 +33,10 @@ import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.Transaction; import com.cloud.utils.fsm.StateDao; import com.cloud.utils.fsm.StateListener; -import com.cloud.vm.State; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.Event; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.dao.VMInstanceDao; @Local(value=StateListener.class) diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index 503e926278c..095afe66fde 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -162,11 +162,11 @@ import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.exception.ExecutionException; import com.cloud.vm.DiskProfile; -import com.cloud.vm.State; import com.cloud.vm.UserVmManager; import com.cloud.vm.UserVmVO; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.dao.ConsoleProxyDao; import com.cloud.vm.dao.UserVmDao; diff --git a/server/src/com/cloud/storage/allocator/LocalStoragePoolAllocator.java b/server/src/com/cloud/storage/allocator/LocalStoragePoolAllocator.java index 67ab1e0180e..255461e3b8f 100644 --- a/server/src/com/cloud/storage/allocator/LocalStoragePoolAllocator.java +++ b/server/src/com/cloud/storage/allocator/LocalStoragePoolAllocator.java @@ -50,10 +50,10 @@ import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.SearchCriteria.Func; import com.cloud.vm.DiskProfile; -import com.cloud.vm.State; import com.cloud.vm.UserVmVO; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.VirtualMachineProfileImpl; import com.cloud.vm.dao.UserVmDao; @@ -124,12 +124,14 @@ public class LocalStoragePoolAllocator extends FirstFitStoragePoolAllocator { if(s_logger.isDebugEnabled()) { s_logger.debug("Found " + vmsOnHost.size() + " VM instances are alloacated at host " + spHost.getHostId() + " with local storage pool " + pool.getName()); - for(Long vmId : vmsOnHost) - s_logger.debug("VM " + vmId + " is allocated on host " + spHost.getHostId() + " with local storage pool " + pool.getName()); + for(Long vmId : vmsOnHost) { + s_logger.debug("VM " + vmId + " is allocated on host " + spHost.getHostId() + " with local storage pool " + pool.getName()); + } } - if(hostHasCpuMemoryCapacity(spHost.getHostId(), vmsOnHost, vm)) - return pool; + if(hostHasCpuMemoryCapacity(spHost.getHostId(), vmsOnHost, vm)) { + return pool; + } s_logger.debug("Found pool " + pool.getId() + " but host doesn't fit."); } @@ -143,8 +145,9 @@ public class LocalStoragePoolAllocator extends FirstFitStoragePoolAllocator { ServiceOffering so = null; if(vm.getType() == VirtualMachine.Type.User) { UserVmVO userVm = _vmDao.findById(vm.getId()); - if (userVm != null) - so = _offeringDao.findById(userVm.getServiceOfferingId()); + if (userVm != null) { + so = _offeringDao.findById(userVm.getServiceOfferingId()); + } } else if(vm.getType() == VirtualMachine.Type.ConsoleProxy) { so = new ServiceOfferingVO("Fake Offering For DomP", 1, _proxyRamSize, 0, 0, 0, false, null, NetworkOffering.GuestIpType.Virtual, false, true, null, true); @@ -158,9 +161,10 @@ public class LocalStoragePoolAllocator extends FirstFitStoragePoolAllocator { } long usedMemory = calcHostAllocatedCpuMemoryCapacity(vmOnHost, CapacityVO.CAPACITY_TYPE_MEMORY); - if(s_logger.isDebugEnabled()) - s_logger.debug("Calculated static-allocated memory for VMs on host " + hostId + ": " + usedMemory + " bytes, requesting memory: " + if(s_logger.isDebugEnabled()) { + s_logger.debug("Calculated static-allocated memory for VMs on host " + hostId + ": " + usedMemory + " bytes, requesting memory: " + (so != null ? so.getRamSize()*1024L*1024L : "") + " bytes"); + } SearchCriteria sc = _capacityDao.createSearchCriteria(); sc.addAnd("hostOrPoolId", SearchCriteria.Op.EQ, hostId); @@ -168,8 +172,9 @@ public class LocalStoragePoolAllocator extends FirstFitStoragePoolAllocator { List capacities = _capacityDao.search(sc, null); if(capacities.size() > 0) { if(capacities.get(0).getTotalCapacity() < usedMemory + (so != null ? so.getRamSize()* 1024L * 1024L : 0)) { - if(s_logger.isDebugEnabled()) - s_logger.debug("Host " + hostId + " runs out of memory capacity"); + if(s_logger.isDebugEnabled()) { + s_logger.debug("Host " + hostId + " runs out of memory capacity"); + } return false; } } else { @@ -178,9 +183,10 @@ public class LocalStoragePoolAllocator extends FirstFitStoragePoolAllocator { } long usedCpu = calcHostAllocatedCpuMemoryCapacity(vmOnHost, CapacityVO.CAPACITY_TYPE_CPU); - if(s_logger.isDebugEnabled()) - s_logger.debug("Calculated static-allocated CPU for VMs on host " + hostId + ": " + usedCpu + " GHz, requesting cpu: " + if(s_logger.isDebugEnabled()) { + s_logger.debug("Calculated static-allocated CPU for VMs on host " + hostId + ": " + usedCpu + " GHz, requesting cpu: " + (so != null ? so.getCpu()*so.getSpeed() : "") + " GHz"); + } sc = _capacityDao.createSearchCriteria(); sc.addAnd("hostOrPoolId", SearchCriteria.Op.EQ, hostId); @@ -188,8 +194,9 @@ public class LocalStoragePoolAllocator extends FirstFitStoragePoolAllocator { capacities = _capacityDao.search(sc, null); if(capacities.size() > 0) { if(capacities.get(0).getTotalCapacity() < usedCpu + (so != null ? so.getCpu() * so.getSpeed() : 0)) { - if(s_logger.isDebugEnabled()) - s_logger.debug("Host " + hostId + " runs out of CPU capacity"); + if(s_logger.isDebugEnabled()) { + s_logger.debug("Host " + hostId + " runs out of CPU capacity"); + } return false; } } else { @@ -201,25 +208,29 @@ public class LocalStoragePoolAllocator extends FirstFitStoragePoolAllocator { } private boolean skipCalculation(VMInstanceVO vm) { - if(vm == null) - return true; + if(vm == null) { + return true; + } if(vm.getState() == State.Expunging) { - if(s_logger.isDebugEnabled()) - s_logger.debug("Skip counting capacity for Expunging VM : " + vm.getInstanceName()); + if(s_logger.isDebugEnabled()) { + s_logger.debug("Skip counting capacity for Expunging VM : " + vm.getInstanceName()); + } return true; } - if(vm.getState() == State.Destroyed && vm.getType() != VirtualMachine.Type.User) - return true; + if(vm.getState() == State.Destroyed && vm.getType() != VirtualMachine.Type.User) { + return true; + } if(vm.getState() == State.Stopped || vm.getState() == State.Destroyed) { // for stopped/Destroyed VMs, we will skip counting it if it hasn't been used for a while long millisecondsSinceLastUpdate = DateUtil.currentGMTTime().getTime() - vm.getUpdateTime().getTime(); if(millisecondsSinceLastUpdate > _hoursToSkipStoppedVMs*3600000L) { - if(s_logger.isDebugEnabled()) - s_logger.debug("Skip counting vm " + vm.getInstanceName() + " in capacity allocation as it has been stopped for " + millisecondsSinceLastUpdate/60000 + " minutes"); + if(s_logger.isDebugEnabled()) { + s_logger.debug("Skip counting vm " + vm.getInstanceName() + " in capacity allocation as it has been stopped for " + millisecondsSinceLastUpdate/60000 + " minutes"); + } return true; } } @@ -232,8 +243,9 @@ public class LocalStoragePoolAllocator extends FirstFitStoragePoolAllocator { long usedCapacity = 0; for (Long vmId : vmOnHost) { VMInstanceVO vm = _vmInstanceDao.findById(vmId); - if(skipCalculation(vm)) - continue; + if(skipCalculation(vm)) { + continue; + } ServiceOffering so = null; if(vm.getType() == VirtualMachine.Type.User) { diff --git a/server/src/com/cloud/storage/download/DownloadMonitorImpl.java b/server/src/com/cloud/storage/download/DownloadMonitorImpl.java index fd599f3a523..32f0b23ed13 100755 --- a/server/src/com/cloud/storage/download/DownloadMonitorImpl.java +++ b/server/src/com/cloud/storage/download/DownloadMonitorImpl.java @@ -68,7 +68,7 @@ import com.cloud.storage.template.TemplateInfo; import com.cloud.utils.component.Inject; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.SecondaryStorageVmVO; -import com.cloud.vm.State; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.dao.SecondaryStorageVmDao; diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java index e4ccb7d6341..6af5602f90d 100644 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java @@ -125,8 +125,8 @@ import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; import com.cloud.vm.ReservationContext; import com.cloud.vm.SecondaryStorageVmVO; -import com.cloud.vm.State; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineGuru; import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.VirtualMachineName; diff --git a/server/src/com/cloud/storage/upload/UploadMonitorImpl.java b/server/src/com/cloud/storage/upload/UploadMonitorImpl.java index f9a8a5145c5..676b4a03e65 100755 --- a/server/src/com/cloud/storage/upload/UploadMonitorImpl.java +++ b/server/src/com/cloud/storage/upload/UploadMonitorImpl.java @@ -1,6 +1,5 @@ package com.cloud.storage.upload; -import java.io.File; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -30,7 +29,6 @@ import com.cloud.configuration.dao.ConfigurationDao; import com.cloud.event.EventTypes; import com.cloud.event.EventVO; import com.cloud.event.dao.EventDao; -import com.cloud.exception.InternalErrorException; import com.cloud.host.Host; import com.cloud.host.HostVO; import com.cloud.host.dao.HostDao; @@ -52,7 +50,7 @@ import com.cloud.utils.concurrency.NamedThreadFactory; import com.cloud.utils.db.GlobalLock; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.SecondaryStorageVmVO; -import com.cloud.vm.State; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.dao.SecondaryStorageVmDao; /** @@ -105,9 +103,9 @@ public class UploadMonitorImpl implements UploadMonitor { List uploadsInProgress = _uploadDao.listByTypeUploadStatus(typeId, type, UploadVO.Status.UPLOAD_IN_PROGRESS); - if(uploadsInProgress.size() > 0) - return true; - else if (type == Type.VOLUME && _uploadDao.listByTypeUploadStatus(typeId, type, UploadVO.Status.COPY_IN_PROGRESS).size() > 0){ + if(uploadsInProgress.size() > 0) { + return true; + } else if (type == Type.VOLUME && _uploadDao.listByTypeUploadStatus(typeId, type, UploadVO.Status.COPY_IN_PROGRESS).size() > 0){ return true; } return false; @@ -182,15 +180,17 @@ public class UploadMonitorImpl implements UploadMonitor { String errorString = ""; boolean success = false; List storageServers = _serverDao.listByTypeDataCenter(Host.Type.SecondaryStorage, dataCenterId); - if(storageServers == null ) - throw new CloudRuntimeException("No Storage Server found at the datacenter - " +dataCenterId); + if(storageServers == null ) { + throw new CloudRuntimeException("No Storage Server found at the datacenter - " +dataCenterId); + } Type type = (template.getFormat() == ImageFormat.ISO) ? Type.ISO : Type.TEMPLATE ; //Check if it already exists. List extractURLList = _uploadDao.listByTypeUploadStatus(template.getId(), type, UploadVO.Status.DOWNLOAD_URL_CREATED); - if (extractURLList.size() > 0) - return extractURLList.get(0); + if (extractURLList.size() > 0) { + return extractURLList.get(0); + } // It doesn't exist so create a DB entry. HostVO sserver = storageServers.get(0); @@ -359,9 +359,15 @@ public class UploadMonitorImpl implements UploadMonitor { public String getEvent(Type type){ - if(type == Type.TEMPLATE) return EventTypes.EVENT_TEMPLATE_EXTRACT; - if(type == Type.ISO) return EventTypes.EVENT_ISO_EXTRACT; - if(type == Type.VOLUME) return EventTypes.EVENT_VOLUME_EXTRACT; + if(type == Type.TEMPLATE) { + return EventTypes.EVENT_TEMPLATE_EXTRACT; + } + if(type == Type.ISO) { + return EventTypes.EVENT_ISO_EXTRACT; + } + if(type == Type.VOLUME) { + return EventTypes.EVENT_VOLUME_EXTRACT; + } return null; } diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java index e014689c93d..0be711d149e 100755 --- a/server/src/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/com/cloud/template/TemplateManagerImpl.java @@ -73,22 +73,22 @@ import com.cloud.hypervisor.Hypervisor; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.storage.SnapshotVO; import com.cloud.storage.Storage; +import com.cloud.storage.Storage.ImageFormat; +import com.cloud.storage.Storage.TemplateType; import com.cloud.storage.StorageManager; import com.cloud.storage.StoragePool; import com.cloud.storage.StoragePoolHostVO; import com.cloud.storage.StoragePoolVO; import com.cloud.storage.Upload; +import com.cloud.storage.Upload.Type; import com.cloud.storage.UploadVO; import com.cloud.storage.VMTemplateHostVO; import com.cloud.storage.VMTemplateStoragePoolVO; import com.cloud.storage.VMTemplateStorageResourceAssoc; +import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; import com.cloud.storage.VMTemplateVO; import com.cloud.storage.VMTemplateZoneVO; import com.cloud.storage.VolumeVO; -import com.cloud.storage.Storage.ImageFormat; -import com.cloud.storage.Storage.TemplateType; -import com.cloud.storage.Upload.Type; -import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; import com.cloud.storage.dao.SnapshotDao; import com.cloud.storage.dao.StoragePoolDao; import com.cloud.storage.dao.StoragePoolHostDao; @@ -121,10 +121,10 @@ import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; -import com.cloud.vm.State; import com.cloud.vm.UserVmManager; import com.cloud.vm.UserVmVO; import com.cloud.vm.VMInstanceVO; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.dao.UserVmDao; import com.cloud.vm.dao.VMInstanceDao; diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index d8ebf5ad217..0fecba8e7f4 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -195,6 +195,7 @@ import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.exception.ExecutionException; import com.cloud.utils.net.Ip; import com.cloud.utils.net.NetUtils; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachine.Type; import com.cloud.vm.dao.DomainRouterDao; import com.cloud.vm.dao.InstanceGroupDao; diff --git a/server/src/com/cloud/vm/VirtualMachineManager.java b/server/src/com/cloud/vm/VirtualMachineManager.java index 7ba0dbf8e56..a866e168450 100644 --- a/server/src/com/cloud/vm/VirtualMachineManager.java +++ b/server/src/com/cloud/vm/VirtualMachineManager.java @@ -83,7 +83,7 @@ public interface VirtualMachineManager extends Manager { T advanceStart(T vm, Map params, User caller, Account account, HypervisorType hyperType) throws InsufficientCapacityException, ResourceUnavailableException, ConcurrentOperationException, OperationTimedoutException; - boolean advanceStop(T vm, User caller, Account account) throws ResourceUnavailableException, OperationTimedoutException, ConcurrentOperationException; + boolean advanceStop(T vm, boolean forced, User caller, Account account) throws ResourceUnavailableException, OperationTimedoutException, ConcurrentOperationException; boolean advanceExpunge(T vm, User caller, Account account) throws ResourceUnavailableException, OperationTimedoutException, ConcurrentOperationException; diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java index 2ef754d33d2..e5ff73fca7e 100644 --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -87,6 +87,7 @@ import com.cloud.utils.fsm.StateListener; import com.cloud.utils.fsm.StateMachine2; import com.cloud.vm.ItWorkVO.Type; import com.cloud.vm.VirtualMachine.Event; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.dao.ConsoleProxyDao; import com.cloud.vm.dao.DomainRouterDao; import com.cloud.vm.dao.SecondaryStorageVmDao; @@ -252,7 +253,7 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Cluster return true; } - if (!this.advanceStop(vm, caller, account)) { + if (!this.advanceStop(vm, false, caller, account)) { if (s_logger.isDebugEnabled()) { s_logger.debug("Unable to stop the VM so we can't expunge it."); } @@ -468,7 +469,7 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Cluster @Override public boolean stop(T vm, User user, Account account) throws ResourceUnavailableException { try { - return advanceStop(vm, user, account); + return advanceStop(vm, false, user, account); } catch (OperationTimedoutException e) { throw new AgentUnavailableException("Unable to stop vm because the operation to stop timed out", vm.getHostId(), e); } catch (ConcurrentOperationException e) { @@ -477,7 +478,7 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Cluster } @Override - public boolean advanceStop(T vm, User user, Account account) throws AgentUnavailableException, OperationTimedoutException, ConcurrentOperationException { + public boolean advanceStop(T vm, boolean forced, User user, Account account) throws AgentUnavailableException, OperationTimedoutException, ConcurrentOperationException { State state = vm.getState(); if (state == State.Stopped) { if (s_logger.isDebugEnabled()) { @@ -517,7 +518,11 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Cluster } } finally { if (!stopped) { - stateTransitTo(vm, Event.OperationFailed, vm.getHostId()); + if (!forced) { + stateTransitTo(vm, Event.OperationFailed, vm.getHostId()); + } else { + s_logger.warn("Unable to actually stop " + vm + " but continue with release because it's a force stop"); + } } } @@ -528,8 +533,8 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Cluster boolean cleanup = false; VirtualMachineProfile profile = new VirtualMachineProfileImpl(vm); - try { - _networkMgr.release(profile); + try { + _networkMgr.release(profile, forced); s_logger.debug("Successfully released network resources for the vm " + vm); } catch (Exception e) { s_logger.warn("Unable to release some network resources.", e); @@ -650,7 +655,7 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Cluster return true; } - if (!advanceStop(vm, user, caller)) { + if (!advanceStop(vm, false, user, caller)) { s_logger.debug("Unable to stop " + vm); return false; } diff --git a/server/src/com/cloud/vm/dao/ConsoleProxyDao.java b/server/src/com/cloud/vm/dao/ConsoleProxyDao.java index 1a9fd2e2e77..1b06d2a61cd 100644 --- a/server/src/com/cloud/vm/dao/ConsoleProxyDao.java +++ b/server/src/com/cloud/vm/dao/ConsoleProxyDao.java @@ -18,17 +18,17 @@ package com.cloud.vm.dao; -import java.util.Date; -import java.util.List; - +import java.util.Date; +import java.util.List; + import com.cloud.info.ConsoleProxyLoadInfo; import com.cloud.utils.Pair; import com.cloud.utils.db.GenericDao; import com.cloud.utils.fsm.StateDao; import com.cloud.vm.ConsoleProxyVO; -import com.cloud.vm.State; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; public interface ConsoleProxyDao extends GenericDao, StateDao { diff --git a/server/src/com/cloud/vm/dao/ConsoleProxyDaoImpl.java b/server/src/com/cloud/vm/dao/ConsoleProxyDaoImpl.java index f369f24bd07..090ab00ad48 100644 --- a/server/src/com/cloud/vm/dao/ConsoleProxyDaoImpl.java +++ b/server/src/com/cloud/vm/dao/ConsoleProxyDaoImpl.java @@ -38,10 +38,10 @@ import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.Transaction; import com.cloud.utils.db.UpdateBuilder; import com.cloud.vm.ConsoleProxyVO; -import com.cloud.vm.State; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.Event; +import com.cloud.vm.VirtualMachine.State; @Local(value={ConsoleProxyDao.class}) public class ConsoleProxyDaoImpl extends GenericDaoBase implements ConsoleProxyDao { @@ -304,10 +304,11 @@ public class ConsoleProxyDaoImpl extends GenericDaoBase im Transaction txn = Transaction.currentTxn();; PreparedStatement pstmt = null; try { - if(countAllPoolTypes) - pstmt = txn.prepareAutoCloseStatement(STORAGE_POOL_HOST_INFO); - else - pstmt = txn.prepareAutoCloseStatement(SHARED_STORAGE_POOL_HOST_INFO); + if(countAllPoolTypes) { + pstmt = txn.prepareAutoCloseStatement(STORAGE_POOL_HOST_INFO); + } else { + pstmt = txn.prepareAutoCloseStatement(SHARED_STORAGE_POOL_HOST_INFO); + } pstmt.setLong(1, dcId); ResultSet rs = pstmt.executeQuery(); @@ -329,8 +330,9 @@ public class ConsoleProxyDaoImpl extends GenericDaoBase im pstmt.setLong(1, proxyVmId); ResultSet rs = pstmt.executeQuery(); - if(rs != null && rs.first()) - return rs.getInt(1); + if(rs != null && rs.first()) { + return rs.getInt(1); + } } catch (SQLException e) { } catch (Throwable e) { } @@ -346,8 +348,9 @@ public class ConsoleProxyDaoImpl extends GenericDaoBase im pstmt.setLong(1, proxyVmId); ResultSet rs = pstmt.executeQuery(); - if(rs != null && rs.first()) - return rs.getInt(1); + if(rs != null && rs.first()) { + return rs.getInt(1); + } } catch (SQLException e) { } catch (Throwable e) { } diff --git a/server/src/com/cloud/vm/dao/DomainRouterDao.java b/server/src/com/cloud/vm/dao/DomainRouterDao.java index 2bb5954b4f1..3b0e1ff16c9 100755 --- a/server/src/com/cloud/vm/dao/DomainRouterDao.java +++ b/server/src/com/cloud/vm/dao/DomainRouterDao.java @@ -23,9 +23,9 @@ import com.cloud.network.router.VirtualRouter.Role; import com.cloud.utils.db.GenericDao; import com.cloud.utils.fsm.StateDao; import com.cloud.vm.DomainRouterVO; -import com.cloud.vm.State; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; /** * diff --git a/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java b/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java index 987c511e524..deac41ce05d 100755 --- a/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java +++ b/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java @@ -37,10 +37,10 @@ import com.cloud.utils.db.Transaction; import com.cloud.utils.db.UpdateBuilder; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.DomainRouterVO; -import com.cloud.vm.State; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.Event; +import com.cloud.vm.VirtualMachine.State; @Local(value = { DomainRouterDao.class }) public class DomainRouterDaoImpl extends GenericDaoBase implements DomainRouterDao { diff --git a/server/src/com/cloud/vm/dao/SecondaryStorageVmDao.java b/server/src/com/cloud/vm/dao/SecondaryStorageVmDao.java index f33a71322f9..17092855595 100644 --- a/server/src/com/cloud/vm/dao/SecondaryStorageVmDao.java +++ b/server/src/com/cloud/vm/dao/SecondaryStorageVmDao.java @@ -17,15 +17,14 @@ */ package com.cloud.vm.dao; -import java.util.List; - - +import java.util.List; + import com.cloud.utils.db.GenericDao; import com.cloud.utils.fsm.StateDao; import com.cloud.vm.SecondaryStorageVmVO; -import com.cloud.vm.State; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; public interface SecondaryStorageVmDao extends GenericDao, StateDao { diff --git a/server/src/com/cloud/vm/dao/SecondaryStorageVmDaoImpl.java b/server/src/com/cloud/vm/dao/SecondaryStorageVmDaoImpl.java index 20908e2c781..48b5c328d34 100644 --- a/server/src/com/cloud/vm/dao/SecondaryStorageVmDaoImpl.java +++ b/server/src/com/cloud/vm/dao/SecondaryStorageVmDaoImpl.java @@ -34,12 +34,11 @@ import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.Transaction; import com.cloud.utils.db.UpdateBuilder; -import com.cloud.vm.ConsoleProxyVO; import com.cloud.vm.SecondaryStorageVmVO; -import com.cloud.vm.State; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.Event; +import com.cloud.vm.VirtualMachine.State; @Local(value={SecondaryStorageVmDao.class}) public class SecondaryStorageVmDaoImpl extends GenericDaoBase implements SecondaryStorageVmDao { diff --git a/server/src/com/cloud/vm/dao/UserVmDao.java b/server/src/com/cloud/vm/dao/UserVmDao.java index a779e681073..bc7dcf758cf 100755 --- a/server/src/com/cloud/vm/dao/UserVmDao.java +++ b/server/src/com/cloud/vm/dao/UserVmDao.java @@ -23,10 +23,10 @@ import java.util.List; import com.cloud.uservm.UserVm; import com.cloud.utils.db.GenericDao; import com.cloud.utils.fsm.StateDao; -import com.cloud.vm.State; import com.cloud.vm.UserVmVO; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; +import com.cloud.vm.VirtualMachine.State; public interface UserVmDao extends GenericDao, StateDao { List listByAccountId(long id); diff --git a/server/src/com/cloud/vm/dao/UserVmDaoImpl.java b/server/src/com/cloud/vm/dao/UserVmDaoImpl.java index e30b2ff146b..f61904d461d 100755 --- a/server/src/com/cloud/vm/dao/UserVmDaoImpl.java +++ b/server/src/com/cloud/vm/dao/UserVmDaoImpl.java @@ -33,11 +33,11 @@ import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.UpdateBuilder; import com.cloud.vm.NicVO; -import com.cloud.vm.State; import com.cloud.vm.UserVmVO; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.Event; +import com.cloud.vm.VirtualMachine.State; @Local(value={UserVmDao.class}) public class UserVmDaoImpl extends GenericDaoBase implements UserVmDao { @@ -141,6 +141,7 @@ public class UserVmDaoImpl extends GenericDaoBase implements Use assert _updateTimeAttr != null : "Couldn't get this updateTime attribute"; } + @Override public List listByAccountAndPod(long accountId, long podId) { SearchCriteria sc = AccountPodSearch.create(); sc.setParameters("account", accountId); @@ -149,6 +150,7 @@ public class UserVmDaoImpl extends GenericDaoBase implements Use return listIncludingRemovedBy(sc); } + @Override public List listByAccountAndDataCenter(long accountId, long dcId) { SearchCriteria sc = AccountDataCenterSearch.create(); sc.setParameters("account", accountId); @@ -248,12 +250,14 @@ public class UserVmDaoImpl extends GenericDaoBase implements Use return listBy(sc); } + @Override public List listByAccountId(long id) { SearchCriteria sc = AccountSearch.create(); sc.setParameters("account", id); return listBy(sc); } + @Override public List listByHostId(Long id) { SearchCriteria sc = HostSearch.create(); sc.setParameters("host", id); @@ -269,6 +273,7 @@ public class UserVmDaoImpl extends GenericDaoBase implements Use return listBy(sc); } + @Override public List listRunningByHostId(long hostId) { SearchCriteria sc = HostRunningSearch.create(); sc.setParameters("host", hostId); @@ -277,6 +282,7 @@ public class UserVmDaoImpl extends GenericDaoBase implements Use return listBy(sc); } + @Override public UserVmVO findByName(String name) { SearchCriteria sc = NameSearch.create(); sc.setParameters("name", name); diff --git a/server/src/com/cloud/vm/dao/VMInstanceDao.java b/server/src/com/cloud/vm/dao/VMInstanceDao.java index e39df479427..9babfaabdf6 100644 --- a/server/src/com/cloud/vm/dao/VMInstanceDao.java +++ b/server/src/com/cloud/vm/dao/VMInstanceDao.java @@ -16,33 +16,34 @@ * */ -package com.cloud.vm.dao; - +package com.cloud.vm.dao; + import java.util.Date; import java.util.List; import com.cloud.utils.db.GenericDao; import com.cloud.utils.fsm.StateDao; -import com.cloud.vm.State; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; - -/* - * Data Access Object for vm_instance table - */ -public interface VMInstanceDao extends GenericDao, StateDao { - /** - * What are the vms running on this host? - * @param hostId host. - * @return list of VMInstanceVO running on that host. - */ +import com.cloud.vm.VirtualMachine.State; + + +/* + * Data Access Object for vm_instance table + */ +public interface VMInstanceDao extends GenericDao, StateDao { + /** + * What are the vms running on this host? + * @param hostId host. + * @return list of VMInstanceVO running on that host. + */ List listByHostId(long hostId); - - /** - * List VMs by zone ID - * @param zoneId - * @return list of VMInstanceVO in the specified zone - */ + + /** + * List VMs by zone ID + * @param zoneId + * @return list of VMInstanceVO in the specified zone + */ List listByZoneId(long zoneId); /** @@ -50,25 +51,25 @@ public interface VMInstanceDao extends GenericDao, StateDao< * @param zoneId * @return list of VMInstanceVO in the specified zone, deployed from the specified template, that are not expunged */ - public List listNonExpungedByZoneAndTemplate(long zoneId, long templateId); - - boolean updateIf(VMInstanceVO vm, VirtualMachine.Event event, Long hostId); - - /** - * Find vm instance with names like. - * - * @param name name that fits SQL like. - * @return list of VMInstanceVO - */ - List findVMInstancesLike(String name); - - List findVMInTransition(Date time, State... states); - - /** - * return the counts of domain routers and console proxies running on the host - * @param hostId - * @return - */ + public List listNonExpungedByZoneAndTemplate(long zoneId, long templateId); + + boolean updateIf(VMInstanceVO vm, VirtualMachine.Event event, Long hostId); + + /** + * Find vm instance with names like. + * + * @param name name that fits SQL like. + * @return list of VMInstanceVO + */ + List findVMInstancesLike(String name); + + List findVMInTransition(Date time, State... states); + + /** + * return the counts of domain routers and console proxies running on the host + * @param hostId + * @return + */ Integer[] countRoutersAndProxies(Long hostId); List listByTypes(VirtualMachine.Type... types); @@ -83,4 +84,4 @@ public interface VMInstanceDao extends GenericDao, StateDao< List listByZoneIdAndType(long zoneId, VirtualMachine.Type type); List listUpByHostId(Long hostId); List listByLastHostId(Long hostId); -} +} diff --git a/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java b/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java index 8b5aff7cbd3..3c7adce640d 100644 --- a/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java +++ b/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java @@ -34,11 +34,10 @@ import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.Transaction; import com.cloud.utils.db.UpdateBuilder; -import com.cloud.vm.State; -import com.cloud.vm.UserVmVO; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.Event; +import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachine.Type; @Local(value = { VMInstanceDao.class })