Moved State into VirtualMachine like other States of objects

This commit is contained in:
Alex Huang 2011-01-04 08:43:55 -08:00
parent 83f3884412
commit 4eba6d10d7
56 changed files with 394 additions and 500 deletions

View File

@ -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");

View File

@ -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();
}

View File

@ -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 {

View File

@ -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 <http://www.gnu.org/licenses/>.
*
*/
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<State, Event> {
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<State> getFromStates(VirtualMachine.Event e) {
return s_fsm.getFromStates(this, e);
}
@Override
public Set<Event> getPossibleEvents() {
return s_fsm.getPossibleEvents(this);
}
@Override
public StateMachine<State, Event> getStateMachine() {
return s_fsm;
}
protected static final StateMachine<State, VirtualMachine.Event> s_fsm = new StateMachine<State, VirtualMachine.Event>();
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);
}
}

View File

@ -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<State, Event> {
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<State> getFromStates(VirtualMachine.Event e) {
return s_fsm.getFromStates(this, e);
}
@Override
public Set<Event> getPossibleEvents() {
return s_fsm.getPossibleEvents(this);
}
@Override
public StateMachine<State, Event> getStateMachine() {
return s_fsm;
}
protected static final StateMachine<State, VirtualMachine.Event> s_fsm = new StateMachine<State, VirtualMachine.Event>();
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,

View File

@ -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

View File

@ -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 {

View File

@ -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<String, State> newStates;

View File

@ -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 {

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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"))

View File

@ -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<State, Vi
super();
this.id = id;
this.name = name;
if (vmTemplateId > -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<State, Vi
@Override
public long getTemplateId() {
if (templateId == null)
return -1;
else
return templateId;
if (templateId == null) {
return -1;
} else {
return templateId;
}
}
public void setTemplateId(Long templateId) {

View File

@ -41,6 +41,7 @@ import com.cloud.host.dao.HostDao;
import com.cloud.storage.dao.VolumeDao;
import com.cloud.utils.db.GlobalLock;
import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.VirtualMachine;
import com.cloud.vm.dao.VMInstanceDao;
public class AgentMonitor extends Thread implements Listener {
@ -139,7 +140,7 @@ public class AgentMonitor extends Thread implements Listener {
boolean stillWorking = false;
for (Long id : ids) {
VMInstanceVO instance = _vmDao.findById(id);
if (instance != null && (instance.getState() == com.cloud.vm.State.Starting || instance.getState() == com.cloud.vm.State.Stopping || instance.getState() == com.cloud.vm.State.Running || instance.getState() == com.cloud.vm.State.Migrating)) {
if (instance != null && (instance.getState() == VirtualMachine.State.Starting || instance.getState() == VirtualMachine.State.Stopping || instance.getState() == VirtualMachine.State.Running || instance.getState() == VirtualMachine.State.Migrating)) {
stillWorking = true;
break;
}

View File

@ -52,10 +52,10 @@ import com.cloud.utils.NumbersUtil;
import com.cloud.utils.Pair;
import com.cloud.utils.component.Inject;
import com.cloud.utils.db.SearchCriteria;
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.dao.UserVmDao;
import com.cloud.vm.dao.VMInstanceDao;
@ -194,25 +194,29 @@ public class UserConcentratedAllocator implements PodAllocator {
private boolean skipCalculation(VMInstanceVO vm) {
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
int _hoursToSkipVMs = _hoursToSkipStoppedVMs;
if (vm.getState() == State.Destroyed)
_hoursToSkipVMs = _hoursToSkipDestroyedVMs;
if (vm.getState() == State.Destroyed) {
_hoursToSkipVMs = _hoursToSkipDestroyedVMs;
}
long millisecondsSinceLastUpdate = DateUtil.currentGMTTime().getTime() - vm.getUpdateTime().getTime();
if(millisecondsSinceLastUpdate > _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<VMInstanceVO> 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) {

View File

@ -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 {

View File

@ -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 <http://www.gnu.org/licenses/>.
*
*/
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);
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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 {

View File

@ -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")

View File

@ -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;

View File

@ -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<String> categories = Config.getCategories();

View File

@ -115,7 +115,7 @@ public interface NetworkManager extends NetworkService {
void allocate(VirtualMachineProfile<? extends VMInstanceVO> vm, List<Pair<NetworkVO, NicProfile>> networks) throws InsufficientCapacityException, ConcurrentOperationException;
void prepare(VirtualMachineProfile<? extends VMInstanceVO> profile, DeployDestination dest, ReservationContext context) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException;
void release(VirtualMachineProfile<? extends VMInstanceVO> vmProfile);
void release(VirtualMachineProfile<? extends VMInstanceVO> vmProfile, boolean forced);
void cleanupNics(VirtualMachineProfile<? extends VMInstanceVO> vm);

View File

@ -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<? extends VMInstanceVO> vmProfile) {
public void release(VirtualMachineProfile<? extends VMInstanceVO> vmProfile, boolean forced) {
List<NicVO> nics = _nicDao.listBy(vmProfile.getId());
for (NicVO nic : nics) {
NetworkVO network = _networksDao.findById(nic.getNetworkId());

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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());
}

View File

@ -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

View File

@ -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;
}

View File

@ -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<SecurityGroupVMMapVO, Long> {
List<SecurityGroupVMMapVO> listByIpAndInstanceId(String ipAddress, long instanceId);

View File

@ -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<SecurityGroupVMMapVO, Long> implements SecurityGroupVMMapDao {
@ -75,6 +75,7 @@ public class SecurityGroupVMMapDaoImpl extends GenericDaoBase<SecurityGroupVMMap
ListByVmIdGroupId.done();
}
@Override
public List<SecurityGroupVMMapVO> listByIpAndInstanceId(String ipAddress, long vmId) {
SearchCriteria<SecurityGroupVMMapVO> sc = ListByIpAndVmId.create();
sc.setParameters("ipAddress", ipAddress);

View File

@ -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<String, State> newStates = new HashMap<String, State>();
HashMap<String, VirtualMachine.State> newStates = new HashMap<String, VirtualMachine.State>();
return new PingRoutingCommand(com.cloud.host.Host.Type.Routing, id, newStates);
}

View File

@ -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;

View File

@ -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)

View File

@ -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;

View File

@ -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<CapacityVO> sc = _capacityDao.createSearchCriteria();
sc.addAnd("hostOrPoolId", SearchCriteria.Op.EQ, hostId);
@ -168,8 +172,9 @@ public class LocalStoragePoolAllocator extends FirstFitStoragePoolAllocator {
List<CapacityVO> 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) {

View File

@ -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;

View File

@ -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;

View File

@ -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<UploadVO> 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<HostVO> 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<UploadVO> 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;
}

View File

@ -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;

View File

@ -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;

View File

@ -83,7 +83,7 @@ public interface VirtualMachineManager extends Manager {
<T extends VMInstanceVO> T advanceStart(T vm, Map<String, Object> params, User caller, Account account, HypervisorType hyperType) throws InsufficientCapacityException, ResourceUnavailableException, ConcurrentOperationException, OperationTimedoutException;
<T extends VMInstanceVO> boolean advanceStop(T vm, User caller, Account account) throws ResourceUnavailableException, OperationTimedoutException, ConcurrentOperationException;
<T extends VMInstanceVO> boolean advanceStop(T vm, boolean forced, User caller, Account account) throws ResourceUnavailableException, OperationTimedoutException, ConcurrentOperationException;
<T extends VMInstanceVO> boolean advanceExpunge(T vm, User caller, Account account) throws ResourceUnavailableException, OperationTimedoutException, ConcurrentOperationException;

View File

@ -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 <T extends VMInstanceVO> 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 <T extends VMInstanceVO> boolean advanceStop(T vm, User user, Account account) throws AgentUnavailableException, OperationTimedoutException, ConcurrentOperationException {
public <T extends VMInstanceVO> 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<T> profile = new VirtualMachineProfileImpl<T>(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;
}

View File

@ -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<ConsoleProxyVO, Long>, StateDao<State, VirtualMachine.Event, VMInstanceVO> {

View File

@ -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<ConsoleProxyVO, Long> implements ConsoleProxyDao {
@ -304,10 +304,11 @@ public class ConsoleProxyDaoImpl extends GenericDaoBase<ConsoleProxyVO, Long> 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<ConsoleProxyVO, Long> 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<ConsoleProxyVO, Long> 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) {
}

View File

@ -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;
/**
*

View File

@ -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<DomainRouterVO, Long> implements DomainRouterDao {

View File

@ -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<SecondaryStorageVmVO, Long>, StateDao<State, VirtualMachine.Event, VMInstanceVO> {

View File

@ -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<SecondaryStorageVmVO, Long> implements SecondaryStorageVmDao {

View File

@ -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<UserVmVO, Long>, StateDao<State, VirtualMachine.Event, VMInstanceVO> {
List<UserVmVO> listByAccountId(long id);

View File

@ -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<UserVmVO, Long> implements UserVmDao {
@ -141,6 +141,7 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long> implements Use
assert _updateTimeAttr != null : "Couldn't get this updateTime attribute";
}
@Override
public List<UserVmVO> listByAccountAndPod(long accountId, long podId) {
SearchCriteria<UserVmVO> sc = AccountPodSearch.create();
sc.setParameters("account", accountId);
@ -149,6 +150,7 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long> implements Use
return listIncludingRemovedBy(sc);
}
@Override
public List<UserVmVO> listByAccountAndDataCenter(long accountId, long dcId) {
SearchCriteria<UserVmVO> sc = AccountDataCenterSearch.create();
sc.setParameters("account", accountId);
@ -248,12 +250,14 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long> implements Use
return listBy(sc);
}
@Override
public List<UserVmVO> listByAccountId(long id) {
SearchCriteria<UserVmVO> sc = AccountSearch.create();
sc.setParameters("account", id);
return listBy(sc);
}
@Override
public List<UserVmVO> listByHostId(Long id) {
SearchCriteria<UserVmVO> sc = HostSearch.create();
sc.setParameters("host", id);
@ -269,6 +273,7 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long> implements Use
return listBy(sc);
}
@Override
public List<UserVmVO> listRunningByHostId(long hostId) {
SearchCriteria<UserVmVO> sc = HostRunningSearch.create();
sc.setParameters("host", hostId);
@ -277,6 +282,7 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long> implements Use
return listBy(sc);
}
@Override
public UserVmVO findByName(String name) {
SearchCriteria<UserVmVO> sc = NameSearch.create();
sc.setParameters("name", name);

View File

@ -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<VMInstanceVO, Long>, StateDao<State, VirtualMachine.Event, VMInstanceVO> {
/**
* 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<VMInstanceVO, Long>, StateDao<State, VirtualMachine.Event, VMInstanceVO> {
/**
* What are the vms running on this host?
* @param hostId host.
* @return list of VMInstanceVO running on that host.
*/
List<VMInstanceVO> 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<VMInstanceVO> listByZoneId(long zoneId);
/**
@ -50,25 +51,25 @@ public interface VMInstanceDao extends GenericDao<VMInstanceVO, Long>, StateDao<
* @param zoneId
* @return list of VMInstanceVO in the specified zone, deployed from the specified template, that are not expunged
*/
public List<VMInstanceVO> 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<VMInstanceVO> findVMInstancesLike(String name);
List<VMInstanceVO> findVMInTransition(Date time, State... states);
/**
* return the counts of domain routers and console proxies running on the host
* @param hostId
* @return
*/
public List<VMInstanceVO> 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<VMInstanceVO> findVMInstancesLike(String name);
List<VMInstanceVO> 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<VMInstanceVO> listByTypes(VirtualMachine.Type... types);
@ -83,4 +84,4 @@ public interface VMInstanceDao extends GenericDao<VMInstanceVO, Long>, StateDao<
List<VMInstanceVO> listByZoneIdAndType(long zoneId, VirtualMachine.Type type);
List<VMInstanceVO> listUpByHostId(Long hostId);
List<VMInstanceVO> listByLastHostId(Long hostId);
}
}

View File

@ -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 })