Removed the getByTypeAndId() method and replace it with getById method

This commit is contained in:
Alex Huang 2013-07-22 17:25:48 -07:00
parent 9f15779f10
commit 319d91e1c2
18 changed files with 115 additions and 120 deletions

View File

@ -16,9 +16,9 @@
// under the License. // under the License.
package com.cloud.ha; package com.cloud.ha;
import com.cloud.host.HostVO; import com.cloud.host.Host;
import com.cloud.utils.component.Adapter; import com.cloud.utils.component.Adapter;
import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine;
public interface FenceBuilder extends Adapter { public interface FenceBuilder extends Adapter {
/** /**
@ -27,5 +27,5 @@ public interface FenceBuilder extends Adapter {
* @param vm vm * @param vm vm
* @param host host where the vm was running on. * @param host host where the vm was running on.
*/ */
public Boolean fenceOff(VMInstanceVO vm, HostVO host); public Boolean fenceOff(VirtualMachine vm, Host host);
} }

View File

@ -16,10 +16,10 @@
// under the License. // under the License.
package com.cloud.ha; package com.cloud.ha;
import com.cloud.host.HostVO; import com.cloud.host.Host;
import com.cloud.host.Status; import com.cloud.host.Status;
import com.cloud.utils.component.Adapter; import com.cloud.utils.component.Adapter;
import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine;
public interface Investigator extends Adapter { public interface Investigator extends Adapter {
/** /**
@ -27,7 +27,7 @@ public interface Investigator extends Adapter {
* *
* @param vm to work on. * @param vm to work on.
*/ */
public Boolean isVmAlive(VMInstanceVO vm, HostVO host); public Boolean isVmAlive(VirtualMachine vm, Host host);
public Status isAgentAlive(HostVO agent); public Status isAgentAlive(Host agent);
} }

View File

@ -158,7 +158,7 @@ public interface VirtualMachine extends RunningOn, ControlledEntity, Identity, I
} }
} }
public static final String IsDynamicScalingEnabled = "enable.dynamic.scaling"; static final String IsDynamicScalingEnabled = "enable.dynamic.scaling";
public enum Event { public enum Event {
CreateRequested, CreateRequested,
@ -182,27 +182,28 @@ public interface VirtualMachine extends RunningOn, ControlledEntity, Identity, I
}; };
public enum Type { public enum Type {
User, User(false),
DomainRouter, DomainRouter(true),
ConsoleProxy, ConsoleProxy(true),
SecondaryStorageVm, SecondaryStorageVm(true),
ElasticIpVm, ElasticIpVm(true),
ElasticLoadBalancerVm, ElasticLoadBalancerVm(true),
InternalLoadBalancerVm, InternalLoadBalancerVm(true),
/* /*
* UserBareMetal is only used for selecting VirtualMachineGuru, there is no * UserBareMetal is only used for selecting VirtualMachineGuru, there is no
* VM with this type. UserBareMetal should treat exactly as User. * VM with this type. UserBareMetal should treat exactly as User.
*/ */
UserBareMetal; UserBareMetal(false);
public static boolean isSystemVM(VirtualMachine.Type vmtype) { boolean _isUsedBySystem;
if (DomainRouter.equals(vmtype)
|| ConsoleProxy.equals(vmtype) private Type(boolean isUsedBySystem) {
|| SecondaryStorageVm.equals(vmtype) || InternalLoadBalancerVm.equals(vmtype)) { _isUsedBySystem = isUsedBySystem;
return true; }
}
return false; public boolean isUsedBySystem() {
return _isUsedBySystem;
} }
} }
@ -211,39 +212,39 @@ public interface VirtualMachine extends RunningOn, ControlledEntity, Identity, I
* reference this VM. You can build names that starts with this name and it * reference this VM. You can build names that starts with this name and it
* guarantees uniqueness for things related to the VM. * guarantees uniqueness for things related to the VM.
*/ */
public String getInstanceName(); String getInstanceName();
/** /**
* @return the host name of the virtual machine. If the user did not * @return the host name of the virtual machine. If the user did not
* specify the host name when creating the virtual machine then it is * specify the host name when creating the virtual machine then it is
* defaults to the instance name. * defaults to the instance name.
*/ */
public String getHostName(); String getHostName();
/** /**
* @return the ip address of the virtual machine. * @return the ip address of the virtual machine.
*/ */
public String getPrivateIpAddress(); String getPrivateIpAddress();
/** /**
* @return mac address. * @return mac address.
*/ */
public String getPrivateMacAddress(); String getPrivateMacAddress();
/** /**
* @return password of the host for vnc purposes. * @return password of the host for vnc purposes.
*/ */
public String getVncPassword(); String getVncPassword();
/** /**
* @return the state of the virtual machine * @return the state of the virtual machine
*/ */
// public State getState(); // State getState();
/** /**
* @return template id. * @return template id.
*/ */
public long getTemplateId(); long getTemplateId();
@ -252,49 +253,51 @@ public interface VirtualMachine extends RunningOn, ControlledEntity, Identity, I
* *
* @return guestOSId * @return guestOSId
*/ */
public long getGuestOSId(); long getGuestOSId();
/** /**
* @return pod id. * @return pod id.
*/ */
public Long getPodIdToDeployIn(); Long getPodIdToDeployIn();
/** /**
* @return data center id. * @return data center id.
*/ */
public long getDataCenterId(); long getDataCenterId();
/** /**
* @return id of the host it was assigned last time. * @return id of the host it was assigned last time.
*/ */
public Long getLastHostId(); Long getLastHostId();
@Override @Override
public Long getHostId(); Long getHostId();
/** /**
* @return should HA be enabled for this machine? * @return should HA be enabled for this machine?
*/ */
public boolean isHaEnabled(); boolean isHaEnabled();
/** /**
* @return should limit CPU usage to the service offering? * @return should limit CPU usage to the service offering?
*/ */
public boolean limitCpuUse(); boolean limitCpuUse();
/** /**
* @return date when machine was created * @return date when machine was created
*/ */
public Date getCreated(); Date getCreated();
public long getServiceOfferingId(); long getServiceOfferingId();
public Long getDiskOfferingId(); Long getDiskOfferingId();
Type getType(); Type getType();
HypervisorType getHypervisorType(); HypervisorType getHypervisorType();
public Map<String, String> getDetails(); Map<String, String> getDetails();
long getUpdated();
} }

View File

@ -31,12 +31,13 @@ import com.cloud.agent.api.FenceCommand;
import com.cloud.exception.AgentUnavailableException; import com.cloud.exception.AgentUnavailableException;
import com.cloud.exception.OperationTimedoutException; import com.cloud.exception.OperationTimedoutException;
import com.cloud.ha.FenceBuilder; import com.cloud.ha.FenceBuilder;
import com.cloud.host.Host;
import com.cloud.host.HostVO; import com.cloud.host.HostVO;
import com.cloud.host.Status; import com.cloud.host.Status;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.utils.component.AdapterBase;
import com.cloud.vm.VMInstanceVO;
import com.cloud.resource.ResourceManager; import com.cloud.resource.ResourceManager;
import com.cloud.utils.component.AdapterBase;
import com.cloud.vm.VirtualMachine;
@Local(value=FenceBuilder.class) @Local(value=FenceBuilder.class)
public class OvmFencer extends AdapterBase implements FenceBuilder { public class OvmFencer extends AdapterBase implements FenceBuilder {
@ -66,7 +67,7 @@ public class OvmFencer extends AdapterBase implements FenceBuilder {
} }
@Override @Override
public Boolean fenceOff(VMInstanceVO vm, HostVO host) { public Boolean fenceOff(VirtualMachine vm, Host host) {
if (host.getHypervisorType() != HypervisorType.Ovm) { if (host.getHypervisorType() != HypervisorType.Ovm) {
s_logger.debug("Don't know how to fence non Ovm hosts " + host.getHypervisorType()); s_logger.debug("Don't know how to fence non Ovm hosts " + host.getHypervisorType());
return null; return null;

View File

@ -11,25 +11,22 @@
// Unless required by applicable law or agreed to in writing, // Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an // software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the // KIND, either express or implied. See the License for the
// specific language governing permissions and limitations // specific language governing permissions and limitations
// under the License. // under the License.
package com.cloud.ha; package com.cloud.ha;
import java.util.Map;
import javax.ejb.Local; import javax.ejb.Local;
import javax.naming.ConfigurationException;
import com.cloud.host.HostVO; import com.cloud.host.Host;
import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.AdapterBase;
import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine;
@Local(value=FenceBuilder.class) @Local(value=FenceBuilder.class)
public class VmwareFencer extends AdapterBase implements FenceBuilder { public class VmwareFencer extends AdapterBase implements FenceBuilder {
@Override @Override
public Boolean fenceOff(VMInstanceVO vm, HostVO host) { public Boolean fenceOff(VirtualMachine vm, Host host) {
return null; return null;
} }

View File

@ -11,18 +11,18 @@
// Unless required by applicable law or agreed to in writing, // Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an // software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the // KIND, either express or implied. See the License for the
// specific language governing permissions and limitations // specific language governing permissions and limitations
// under the License. // under the License.
package com.cloud.ha; package com.cloud.ha;
import javax.ejb.Local; import javax.ejb.Local;
import com.cloud.host.HostVO; import com.cloud.host.Host;
import com.cloud.host.Status; import com.cloud.host.Status;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.AdapterBase;
import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine;
@Local(value=Investigator.class) @Local(value=Investigator.class)
public class VmwareInvestigator extends AdapterBase implements Investigator { public class VmwareInvestigator extends AdapterBase implements Investigator {
@ -30,7 +30,7 @@ public class VmwareInvestigator extends AdapterBase implements Investigator {
} }
@Override @Override
public Status isAgentAlive(HostVO agent) { public Status isAgentAlive(Host agent) {
if(agent.getHypervisorType() == HypervisorType.VMware) if(agent.getHypervisorType() == HypervisorType.VMware)
return Status.Disconnected; return Status.Disconnected;
@ -38,7 +38,7 @@ public class VmwareInvestigator extends AdapterBase implements Investigator {
} }
@Override @Override
public Boolean isVmAlive(VMInstanceVO vm, HostVO host) { public Boolean isVmAlive(VirtualMachine vm, Host host) {
if(vm.getHypervisorType() == HypervisorType.VMware) if(vm.getHypervisorType() == HypervisorType.VMware)
return true; return true;

View File

@ -11,7 +11,7 @@
// Unless required by applicable law or agreed to in writing, // Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an // software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the // KIND, either express or implied. See the License for the
// specific language governing permissions and limitations // specific language governing permissions and limitations
// under the License. // under the License.
package com.cloud.ha; package com.cloud.ha;
@ -31,13 +31,14 @@ import com.cloud.agent.api.FenceAnswer;
import com.cloud.agent.api.FenceCommand; import com.cloud.agent.api.FenceCommand;
import com.cloud.exception.AgentUnavailableException; import com.cloud.exception.AgentUnavailableException;
import com.cloud.exception.OperationTimedoutException; import com.cloud.exception.OperationTimedoutException;
import com.cloud.host.Host;
import com.cloud.host.HostVO; import com.cloud.host.HostVO;
import com.cloud.host.Status; import com.cloud.host.Status;
import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.resource.ResourceManager; import com.cloud.resource.ResourceManager;
import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.AdapterBase;
import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine;
@Local(value=FenceBuilder.class) @Local(value=FenceBuilder.class)
public class XenServerFencer extends AdapterBase implements FenceBuilder { public class XenServerFencer extends AdapterBase implements FenceBuilder {
@ -49,7 +50,7 @@ public class XenServerFencer extends AdapterBase implements FenceBuilder {
@Inject ResourceManager _resourceMgr; @Inject ResourceManager _resourceMgr;
@Override @Override
public Boolean fenceOff(VMInstanceVO vm, HostVO host) { public Boolean fenceOff(VirtualMachine vm, Host host) {
if (host.getHypervisorType() != HypervisorType.XenServer) { if (host.getHypervisorType() != HypervisorType.XenServer) {
s_logger.debug("Don't know how to fence non XenServer hosts " + host.getHypervisorType()); s_logger.debug("Don't know how to fence non XenServer hosts " + host.getHypervisorType());
return null; return null;

View File

@ -26,10 +26,10 @@ import com.cloud.agent.api.CheckVirtualMachineAnswer;
import com.cloud.agent.api.CheckVirtualMachineCommand; import com.cloud.agent.api.CheckVirtualMachineCommand;
import com.cloud.exception.AgentUnavailableException; import com.cloud.exception.AgentUnavailableException;
import com.cloud.exception.OperationTimedoutException; import com.cloud.exception.OperationTimedoutException;
import com.cloud.host.HostVO; import com.cloud.host.Host;
import com.cloud.host.Status; import com.cloud.host.Status;
import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.AdapterBase;
import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine;
import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachine.State;
@Local(value=Investigator.class) @Local(value=Investigator.class)
@ -42,12 +42,12 @@ public class CheckOnAgentInvestigator extends AdapterBase implements Investigato
} }
@Override @Override
public Status isAgentAlive(HostVO agent) { public Status isAgentAlive(Host agent) {
return null; return null;
} }
@Override @Override
public Boolean isVmAlive(VMInstanceVO vm, HostVO host) { public Boolean isVmAlive(VirtualMachine vm, Host host) {
CheckVirtualMachineCommand cmd = new CheckVirtualMachineCommand(vm.getInstanceName()); CheckVirtualMachineCommand cmd = new CheckVirtualMachineCommand(vm.getInstanceName());
try { try {
CheckVirtualMachineAnswer answer = (CheckVirtualMachineAnswer)_agentMgr.send(vm.getHostId(), cmd); CheckVirtualMachineAnswer answer = (CheckVirtualMachineAnswer)_agentMgr.send(vm.getHostId(), cmd);

View File

@ -388,7 +388,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
long vmId = work.getInstanceId(); long vmId = work.getInstanceId();
VMInstanceVO vm = _itMgr.findByIdAndType(work.getType(), work.getInstanceId()); VirtualMachine vm = _itMgr.findById(work.getInstanceId());
if (vm == null) { if (vm == null) {
s_logger.info("Unable to find vm: " + vmId); s_logger.info("Unable to find vm: " + vmId);
return null; return null;
@ -506,7 +506,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
} }
} }
vm = _itMgr.findByIdAndType(vm.getType(), vm.getId()); vm = _itMgr.findById(vm.getId());
if (!_forceHA && !vm.isHaEnabled()) { if (!_forceHA && !vm.isHaEnabled()) {
if (s_logger.isDebugEnabled()) { if (s_logger.isDebugEnabled()) {
@ -560,7 +560,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
_alertMgr.sendAlert(alertType, vm.getDataCenterId(), vm.getPodIdToDeployIn(), "Unable to restart " + vm.getHostName() + " which was running on host " + hostDesc, _alertMgr.sendAlert(alertType, vm.getDataCenterId(), vm.getPodIdToDeployIn(), "Unable to restart " + vm.getHostName() + " which was running on host " + hostDesc,
"The Storage is unavailable for trying to restart VM, name: " + vm.getHostName() + ", id: " + vmId + " which was running on host " + hostDesc); "The Storage is unavailable for trying to restart VM, name: " + vm.getHostName() + ", id: " + vmId + " which was running on host " + hostDesc);
} }
vm = _itMgr.findByIdAndType(vm.getType(), vm.getId()); vm = _itMgr.findById(vm.getId());
work.setUpdateTime(vm.getUpdated()); work.setUpdateTime(vm.getUpdated());
work.setPreviousState(vm.getState()); work.setPreviousState(vm.getState());
return (System.currentTimeMillis() >> 10) + _restartRetryInterval; return (System.currentTimeMillis() >> 10) + _restartRetryInterval;
@ -606,7 +606,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
} }
protected Long destroyVM(HaWorkVO work) { protected Long destroyVM(HaWorkVO work) {
final VMInstanceVO vm = _itMgr.findByIdAndType(work.getType(), work.getInstanceId()); final VirtualMachine vm = _itMgr.findById(work.getInstanceId());
s_logger.info("Destroying " + vm.toString()); s_logger.info("Destroying " + vm.toString());
try { try {
if (vm.getState() != State.Destroyed) { if (vm.getState() != State.Destroyed) {
@ -639,7 +639,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
} }
protected Long stopVM(final HaWorkVO work) throws ConcurrentOperationException { protected Long stopVM(final HaWorkVO work) throws ConcurrentOperationException {
VMInstanceVO vm = _itMgr.findByIdAndType(work.getType(), work.getInstanceId()); VirtualMachine vm = _itMgr.findById(work.getInstanceId());
if (vm == null) { if (vm == null) {
s_logger.info("No longer can find VM " + work.getInstanceId() + ". Throwing away " + work); s_logger.info("No longer can find VM " + work.getInstanceId() + ". Throwing away " + work);
work.setStep(Step.Done); work.setStep(Step.Done);

View File

@ -17,7 +17,6 @@
package com.cloud.ha; package com.cloud.ha;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.ejb.Local; import javax.ejb.Local;
@ -31,13 +30,14 @@ import com.cloud.agent.api.FenceAnswer;
import com.cloud.agent.api.FenceCommand; import com.cloud.agent.api.FenceCommand;
import com.cloud.exception.AgentUnavailableException; import com.cloud.exception.AgentUnavailableException;
import com.cloud.exception.OperationTimedoutException; import com.cloud.exception.OperationTimedoutException;
import com.cloud.host.Host;
import com.cloud.host.HostVO; import com.cloud.host.HostVO;
import com.cloud.host.Status; import com.cloud.host.Status;
import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.resource.ResourceManager; import com.cloud.resource.ResourceManager;
import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.AdapterBase;
import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine;
@Local(value=FenceBuilder.class) @Local(value=FenceBuilder.class)
public class KVMFencer extends AdapterBase implements FenceBuilder { public class KVMFencer extends AdapterBase implements FenceBuilder {
@ -70,7 +70,7 @@ public class KVMFencer extends AdapterBase implements FenceBuilder {
} }
@Override @Override
public Boolean fenceOff(VMInstanceVO vm, HostVO host) { public Boolean fenceOff(VirtualMachine vm, Host host) {
if (host.getHypervisorType() != HypervisorType.KVM) { if (host.getHypervisorType() != HypervisorType.KVM) {
s_logger.debug("Don't know how to fence non kvm hosts " + host.getHypervisorType()); s_logger.debug("Don't know how to fence non kvm hosts " + host.getHypervisorType());
return null; return null;

View File

@ -25,13 +25,13 @@ import javax.naming.ConfigurationException;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import com.cloud.host.Host;
import com.cloud.host.HostVO; import com.cloud.host.HostVO;
import com.cloud.host.Status; import com.cloud.host.Status;
import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDao;
import com.cloud.network.NetworkModel; import com.cloud.network.NetworkModel;
import com.cloud.network.Networks.TrafficType; import com.cloud.network.Networks.TrafficType;
import com.cloud.vm.Nic; import com.cloud.vm.Nic;
import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine;
@Local(value={Investigator.class}) @Local(value={Investigator.class})
@ -39,13 +39,13 @@ public class ManagementIPSystemVMInvestigator extends AbstractInvestigatorImpl {
private static final Logger s_logger = Logger.getLogger(ManagementIPSystemVMInvestigator.class); private static final Logger s_logger = Logger.getLogger(ManagementIPSystemVMInvestigator.class);
private String _name = null; private String _name = null;
@Inject private HostDao _hostDao = null; @Inject private final HostDao _hostDao = null;
@Inject private NetworkModel _networkMgr = null; @Inject private final NetworkModel _networkMgr = null;
@Override @Override
public Boolean isVmAlive(VMInstanceVO vm, HostVO host) { public Boolean isVmAlive(VirtualMachine vm, Host host) {
if (!VirtualMachine.Type.isSystemVM(vm.getType())) { if (!vm.getType().isUsedBySystem()) {
s_logger.debug("Not a System Vm, unable to determine state of " + vm + " returning null"); s_logger.debug("Not a System Vm, unable to determine state of " + vm + " returning null");
} }
@ -110,7 +110,7 @@ public class ManagementIPSystemVMInvestigator extends AbstractInvestigatorImpl {
} }
@Override @Override
public Status isAgentAlive(HostVO agent) { public Status isAgentAlive(Host agent) {
return null; return null;
} }

View File

@ -21,15 +21,15 @@ import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
import javax.inject.Inject; import javax.inject.Inject;
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.cloud.host.HostVO; import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
import com.cloud.host.Host;
import com.cloud.storage.VolumeVO; import com.cloud.storage.VolumeVO;
import com.cloud.storage.dao.VolumeDao; import com.cloud.storage.dao.VolumeDao;
import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.AdapterBase;
import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine;
@Component @Component
@ -44,7 +44,7 @@ public class RecreatableFencer extends AdapterBase implements FenceBuilder {
} }
@Override @Override
public Boolean fenceOff(VMInstanceVO vm, HostVO host) { public Boolean fenceOff(VirtualMachine vm, Host host) {
VirtualMachine.Type type = vm.getType(); VirtualMachine.Type type = vm.getType();
if (type != VirtualMachine.Type.ConsoleProxy && type != VirtualMachine.Type.DomainRouter && type != VirtualMachine.Type.SecondaryStorageVm) { if (type != VirtualMachine.Type.ConsoleProxy && type != VirtualMachine.Type.DomainRouter && type != VirtualMachine.Type.SecondaryStorageVm) {
if (s_logger.isDebugEnabled()) { if (s_logger.isDebugEnabled()) {

View File

@ -29,7 +29,7 @@ import org.apache.log4j.Logger;
import com.cloud.agent.AgentManager; import com.cloud.agent.AgentManager;
import com.cloud.agent.api.Answer; import com.cloud.agent.api.Answer;
import com.cloud.agent.api.PingTestCommand; import com.cloud.agent.api.PingTestCommand;
import com.cloud.host.HostVO; import com.cloud.host.Host;
import com.cloud.host.Status; import com.cloud.host.Status;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.network.NetworkModel; import com.cloud.network.NetworkModel;
@ -38,7 +38,6 @@ import com.cloud.network.router.VirtualRouter;
import com.cloud.network.router.VpcVirtualNetworkApplianceManager; import com.cloud.network.router.VpcVirtualNetworkApplianceManager;
import com.cloud.vm.Nic; import com.cloud.vm.Nic;
import com.cloud.vm.UserVmVO; import com.cloud.vm.UserVmVO;
import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine;
import com.cloud.vm.dao.UserVmDao; import com.cloud.vm.dao.UserVmDao;
@ -53,7 +52,7 @@ public class UserVmDomRInvestigator extends AbstractInvestigatorImpl {
@Inject private final VpcVirtualNetworkApplianceManager _vnaMgr = null; @Inject private final VpcVirtualNetworkApplianceManager _vnaMgr = null;
@Override @Override
public Boolean isVmAlive(VMInstanceVO vm, HostVO host) { public Boolean isVmAlive(VirtualMachine vm, Host host) {
if (vm.getType() != VirtualMachine.Type.User) { if (vm.getType() != VirtualMachine.Type.User) {
if (s_logger.isDebugEnabled()) { if (s_logger.isDebugEnabled()) {
s_logger.debug("Not a User Vm, unable to determine state of " + vm + " returning null"); s_logger.debug("Not a User Vm, unable to determine state of " + vm + " returning null");
@ -104,7 +103,7 @@ public class UserVmDomRInvestigator extends AbstractInvestigatorImpl {
} }
@Override @Override
public Status isAgentAlive(HostVO agent) { public Status isAgentAlive(Host agent) {
if (s_logger.isDebugEnabled()) { if (s_logger.isDebugEnabled()) {
s_logger.debug("checking if agent (" + agent.getId() + ") is alive"); s_logger.debug("checking if agent (" + agent.getId() + ") is alive");
} }
@ -166,7 +165,7 @@ public class UserVmDomRInvestigator extends AbstractInvestigatorImpl {
return true; return true;
} }
private Boolean testUserVM(VMInstanceVO vm, Nic nic, VirtualRouter router) { private Boolean testUserVM(VirtualMachine vm, Nic nic, VirtualRouter router) {
String privateIp = nic.getIp4Address(); String privateIp = nic.getIp4Address();
String routerPrivateIp = router.getPrivateIpAddress(); String routerPrivateIp = router.getPrivateIpAddress();

View File

@ -23,17 +23,18 @@ import javax.inject.Inject;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import com.cloud.agent.AgentManager;
import com.cloud.agent.api.Answer; import com.cloud.agent.api.Answer;
import com.cloud.agent.api.CheckOnHostAnswer; import com.cloud.agent.api.CheckOnHostAnswer;
import com.cloud.agent.api.CheckOnHostCommand; import com.cloud.agent.api.CheckOnHostCommand;
import com.cloud.agent.AgentManager; import com.cloud.host.Host;
import com.cloud.host.HostVO; import com.cloud.host.HostVO;
import com.cloud.host.Status; import com.cloud.host.Status;
import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.resource.ResourceManager; import com.cloud.resource.ResourceManager;
import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.AdapterBase;
import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine;
@Local(value=Investigator.class) @Local(value=Investigator.class)
public class XenServerInvestigator extends AdapterBase implements Investigator { public class XenServerInvestigator extends AdapterBase implements Investigator {
@ -46,7 +47,7 @@ public class XenServerInvestigator extends AdapterBase implements Investigator {
} }
@Override @Override
public Status isAgentAlive(HostVO agent) { public Status isAgentAlive(Host agent) {
if (agent.getHypervisorType() != HypervisorType.XenServer) { if (agent.getHypervisorType() != HypervisorType.XenServer) {
return null; return null;
} }
@ -72,7 +73,7 @@ public class XenServerInvestigator extends AdapterBase implements Investigator {
} }
@Override @Override
public Boolean isVmAlive(VMInstanceVO vm, HostVO host) { public Boolean isVmAlive(VirtualMachine vm, Host host) {
Status status = isAgentAlive(host); Status status = isAgentAlive(host);
if (status == null) { if (status == null) {
return null; return null;

View File

@ -35,12 +35,16 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import org.apache.cloudstack.api.IdentityService;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.context.support.SpringBeanAutowiringSupport; import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.apache.cloudstack.api.IdentityService;
import com.cloud.exception.PermissionDeniedException; import com.cloud.exception.PermissionDeniedException;
import com.cloud.host.HostVO; import com.cloud.host.HostVO;
import com.cloud.server.ManagementServer; import com.cloud.server.ManagementServer;
@ -51,12 +55,10 @@ import com.cloud.user.User;
import com.cloud.uservm.UserVm; import com.cloud.uservm.UserVm;
import com.cloud.utils.Pair; import com.cloud.utils.Pair;
import com.cloud.utils.Ternary; import com.cloud.utils.Ternary;
import com.cloud.utils.db.EntityManager;
import com.cloud.utils.db.Transaction; import com.cloud.utils.db.Transaction;
import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine;
import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.VirtualMachineManager;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
/** /**
* Thumbnail access : /console?cmd=thumbnail&vm=xxx&w=xxx&h=xxx * Thumbnail access : /console?cmd=thumbnail&vm=xxx&w=xxx&h=xxx
@ -74,10 +76,12 @@ public class ConsoleProxyServlet extends HttpServlet {
@Inject VirtualMachineManager _vmMgr; @Inject VirtualMachineManager _vmMgr;
@Inject ManagementServer _ms; @Inject ManagementServer _ms;
@Inject IdentityService _identityService; @Inject IdentityService _identityService;
@Inject
EntityManager _entityMgr;
static ManagementServer s_ms; static ManagementServer s_ms;
private Gson _gson = new GsonBuilder().create(); private final Gson _gson = new GsonBuilder().create();
public ConsoleProxyServlet() { public ConsoleProxyServlet() {
} }
@ -179,7 +183,7 @@ public class ConsoleProxyServlet extends HttpServlet {
} }
private void handleThumbnailRequest(HttpServletRequest req, HttpServletResponse resp, long vmId) { private void handleThumbnailRequest(HttpServletRequest req, HttpServletResponse resp, long vmId) {
VMInstanceVO vm = _vmMgr.findById(vmId); VirtualMachine vm = _vmMgr.findById(vmId);
if(vm == null) { if(vm == null) {
s_logger.warn("VM " + vmId + " does not exist, sending blank response for thumbnail request"); s_logger.warn("VM " + vmId + " does not exist, sending blank response for thumbnail request");
sendResponse(resp, ""); sendResponse(resp, "");
@ -230,7 +234,7 @@ public class ConsoleProxyServlet extends HttpServlet {
} }
private void handleAccessRequest(HttpServletRequest req, HttpServletResponse resp, long vmId) { private void handleAccessRequest(HttpServletRequest req, HttpServletResponse resp, long vmId) {
VMInstanceVO vm = _vmMgr.findById(vmId); VirtualMachine vm = _vmMgr.findById(vmId);
if(vm == null) { if(vm == null) {
s_logger.warn("VM " + vmId + " does not exist, sending blank response for console access request"); s_logger.warn("VM " + vmId + " does not exist, sending blank response for console access request");
sendResponse(resp, ""); sendResponse(resp, "");
@ -258,7 +262,7 @@ public class ConsoleProxyServlet extends HttpServlet {
String vmName = vm.getHostName(); String vmName = vm.getHostName();
if(vm.getType() == VirtualMachine.Type.User) { if(vm.getType() == VirtualMachine.Type.User) {
UserVm userVm = (UserVm)_vmMgr.findByIdAndType(VirtualMachine.Type.User, vmId); UserVm userVm = _entityMgr.findById(UserVm.class, vmId);
String displayName = userVm.getDisplayName(); String displayName = userVm.getDisplayName();
if(displayName != null && !displayName.isEmpty() && !displayName.equals(vmName)) { if(displayName != null && !displayName.isEmpty() && !displayName.equals(vmName)) {
vmName += "(" + displayName + ")"; vmName += "(" + displayName + ")";
@ -276,7 +280,7 @@ public class ConsoleProxyServlet extends HttpServlet {
// TODO authentication channel between console proxy VM and management server needs to be secured, // TODO authentication channel between console proxy VM and management server needs to be secured,
// the data is now being sent through private network, but this is apparently not enough // the data is now being sent through private network, but this is apparently not enough
VMInstanceVO vm = _vmMgr.findById(vmId); VirtualMachine vm = _vmMgr.findById(vmId);
if(vm == null) { if(vm == null) {
s_logger.warn("VM " + vmId + " does not exist, sending failed response for authentication request from console proxy"); s_logger.warn("VM " + vmId + " does not exist, sending failed response for authentication request from console proxy");
sendResponse(resp, "failed"); sendResponse(resp, "failed");
@ -339,7 +343,7 @@ public class ConsoleProxyServlet extends HttpServlet {
return _gson.toJson(keyIvPair); return _gson.toJson(keyIvPair);
} }
private String composeThumbnailUrl(String rootUrl, VMInstanceVO vm, HostVO hostVo, int w, int h) { private String composeThumbnailUrl(String rootUrl, VirtualMachine vm, HostVO hostVo, int w, int h) {
StringBuffer sb = new StringBuffer(rootUrl); StringBuffer sb = new StringBuffer(rootUrl);
String host = hostVo.getPrivateIpAddress(); String host = hostVo.getPrivateIpAddress();
@ -374,7 +378,7 @@ public class ConsoleProxyServlet extends HttpServlet {
return sb.toString(); return sb.toString();
} }
private String composeConsoleAccessUrl(String rootUrl, VMInstanceVO vm, HostVO hostVo) { private String composeConsoleAccessUrl(String rootUrl, VirtualMachine vm, HostVO hostVo) {
StringBuffer sb = new StringBuffer(rootUrl); StringBuffer sb = new StringBuffer(rootUrl);
String host = hostVo.getPrivateIpAddress(); String host = hostVo.getPrivateIpAddress();
@ -454,7 +458,7 @@ public class ConsoleProxyServlet extends HttpServlet {
private boolean checkSessionPermision(HttpServletRequest req, long vmId, Account accountObj) { private boolean checkSessionPermision(HttpServletRequest req, long vmId, Account accountObj) {
VMInstanceVO vm = _vmMgr.findById(vmId); VirtualMachine vm = _vmMgr.findById(vmId);
if(vm == null) { if(vm == null) {
s_logger.debug("Console/thumbnail access denied. VM " + vmId + " does not exist in system any more"); s_logger.debug("Console/thumbnail access denied. VM " + vmId + " does not exist in system any more");
return false; return false;

View File

@ -4201,9 +4201,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
txn.commit(); txn.commit();
VMInstanceVO vmoi = _itMgr.findByIdAndType(vm.getType(), vm.getId()); VirtualMachine vmoi = _itMgr.findById(vm.getId());
VirtualMachineProfileImpl vmOldProfile = new VirtualMachineProfileImpl( VirtualMachineProfileImpl vmOldProfile = new VirtualMachineProfileImpl(vmoi);
vmoi);
// OS 3: update the network // OS 3: update the network
List<Long> networkIdList = cmd.getNetworkIds(); List<Long> networkIdList = cmd.getNetworkIds();
@ -4279,9 +4278,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
networks.add(new Pair<NetworkVO, NicProfile>(networkList.get(0), networks.add(new Pair<NetworkVO, NicProfile>(networkList.get(0),
profile)); profile));
VMInstanceVO vmi = _itMgr.findByIdAndType(vm.getType(), vm.getId()); VirtualMachine vmi = _itMgr.findById(vm.getId());
VirtualMachineProfileImpl vmProfile = new VirtualMachineProfileImpl( VirtualMachineProfileImpl vmProfile = new VirtualMachineProfileImpl(vmi);
vmi);
_networkMgr.allocate(vmProfile, networks); _networkMgr.allocate(vmProfile, networks);
_securityGroupMgr.addInstanceToGroups(vm.getId(), _securityGroupMgr.addInstanceToGroups(vm.getId(),
@ -4413,10 +4411,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
networks.add(new Pair<NetworkVO, NicProfile>(appNet, networks.add(new Pair<NetworkVO, NicProfile>(appNet,
defaultNic)); defaultNic));
} }
VMInstanceVO vmi = _itMgr.findByIdAndType(vm.getType(), VirtualMachine vmi = _itMgr.findById(vm.getId());
vm.getId()); VirtualMachineProfileImpl vmProfile = new VirtualMachineProfileImpl(vmi);
VirtualMachineProfileImpl vmProfile = new VirtualMachineProfileImpl(
vmi);
_networkMgr.allocate(vmProfile, networks); _networkMgr.allocate(vmProfile, networks);
s_logger.debug("AssignVM: Advance virtual, adding networks no " s_logger.debug("AssignVM: Advance virtual, adding networks no "
+ networks.size() + " to " + vm.getInstanceName()); + networks.size() + " to " + vm.getInstanceName());

View File

@ -108,8 +108,6 @@ public interface VirtualMachineManager extends Manager {
<T extends VMInstanceVO> T advanceReboot(T vm, Map<VirtualMachineProfile.Param, Object> params, User caller, Account account) throws InsufficientCapacityException, ResourceUnavailableException, ConcurrentOperationException, OperationTimedoutException; <T extends VMInstanceVO> T advanceReboot(T vm, Map<VirtualMachineProfile.Param, Object> params, User caller, Account account) throws InsufficientCapacityException, ResourceUnavailableException, ConcurrentOperationException, OperationTimedoutException;
VMInstanceVO findByIdAndType(VirtualMachine.Type type, long vmId);
/** /**
* Check to see if a virtual machine can be upgraded to the given service offering * Check to see if a virtual machine can be upgraded to the given service offering
* *
@ -119,7 +117,7 @@ public interface VirtualMachineManager extends Manager {
*/ */
boolean isVirtualMachineUpgradable(final VirtualMachine vm, final ServiceOffering offering); boolean isVirtualMachineUpgradable(final VirtualMachine vm, final ServiceOffering offering);
VMInstanceVO findById(long vmId); VirtualMachine findById(long vmId);
<T extends VMInstanceVO> T storageMigration(T vm, StoragePool storagePoolId); <T extends VMInstanceVO> T storageMigration(T vm, StoragePool storagePoolId);

View File

@ -2017,11 +2017,6 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
return rebootedVm; return rebootedVm;
} }
@Override
public VMInstanceVO findByIdAndType(VirtualMachine.Type type, long vmId) {
return _vmDao.findById(vmId);
}
public Command cleanup(VirtualMachine vm) { public Command cleanup(VirtualMachine vm) {
return new StopCommand(vm, _mgmtServer.getExecuteInSequence()); return new StopCommand(vm, _mgmtServer.getExecuteInSequence());
} }