mirror of https://github.com/apache/cloudstack.git
Moved State into VirtualMachine like other States of objects
This commit is contained in:
parent
83f3884412
commit
4eba6d10d7
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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"))
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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> {
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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> {
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 })
|
||||
|
|
|
|||
Loading…
Reference in New Issue