Search in sources :

Example 1 with ScaleVmAnswer

use of com.cloud.legacymodel.communication.answer.ScaleVmAnswer in project cosmic by MissionCriticalCloud.

the class VirtualMachineManagerImplTest method testScaleVM2.

@Test(expected = CloudRuntimeException.class)
public void testScaleVM2() throws Exception {
    new DeployDestination(null, null, null, _host);
    doReturn(3L).when(_vmInstance).getId();
    when(_vmInstanceDao.findById(anyLong())).thenReturn(_vmInstance);
    final ServiceOfferingVO newServiceOffering = getSvcoffering(512);
    doReturn(1L).when(_vmInstance).getHostId();
    doReturn(hostVO).when(_hostDao).findById(1L);
    doReturn(1L).when(_vmInstance).getDataCenterId();
    doReturn(1L).when(hostVO).getClusterId();
    when(CapacityManager.CpuOverprovisioningFactor.valueIn(1L)).thenReturn(1.0f);
    final ScaleVmCommand reconfigureCmd = new ScaleVmCommand("myVmName", newServiceOffering.getCpu(), newServiceOffering.getRamSize(), newServiceOffering.getRamSize(), newServiceOffering.getLimitCpuUse());
    new ScaleVmAnswer(reconfigureCmd, true, "details");
    when(_agentMgr.send(2l, reconfigureCmd)).thenReturn(null);
    _vmMgr.reConfigureVm(_vmInstance.getUuid(), getSvcoffering(256), false);
}
Also used : ScaleVmAnswer(com.cloud.legacymodel.communication.answer.ScaleVmAnswer) DeployDestination(com.cloud.deploy.DeployDestination) ServiceOfferingVO(com.cloud.service.ServiceOfferingVO) ScaleVmCommand(com.cloud.legacymodel.communication.command.ScaleVmCommand) Test(org.junit.Test)

Example 2 with ScaleVmAnswer

use of com.cloud.legacymodel.communication.answer.ScaleVmAnswer in project cosmic by MissionCriticalCloud.

the class CitrixScaleVmCommandWrapper method execute.

@Override
public Answer execute(final ScaleVmCommand command, final CitrixResourceBase citrixResourceBase) {
    final VirtualMachineTO vmSpec = command.getVirtualMachine();
    final String vmName = vmSpec.getName();
    try {
        final Connection conn = citrixResourceBase.getConnection();
        final Set<VM> vms = VM.getByNameLabel(conn, vmName);
        final Host host = Host.getByUuid(conn, citrixResourceBase.getHost().getUuid());
        // If DMC is not enable then don't execute this command.
        if (!citrixResourceBase.isDmcEnabled(conn, host)) {
            throw new CloudRuntimeException("Unable to scale the vm: " + vmName + " as DMC - Dynamic memory control is not enabled for the XenServer:" + citrixResourceBase.getHost().getUuid() + " ,check your license and hypervisor version.");
        }
        if (vms == null || vms.size() == 0) {
            s_logger.info("No running VM " + vmName + " exists on XenServer" + citrixResourceBase.getHost().getUuid());
            return new ScaleVmAnswer(command, false, "VM does not exist");
        }
        // stop vm which is running on this host or is in halted state
        final Iterator<VM> iter = vms.iterator();
        while (iter.hasNext()) {
            final VM vm = iter.next();
            final VM.Record vmr = vm.getRecord(conn);
            if (vmr.powerState == VmPowerState.HALTED || vmr.powerState == VmPowerState.RUNNING && !citrixResourceBase.isRefNull(vmr.residentOn) && !vmr.residentOn.getUuid(conn).equals(citrixResourceBase.getHost().getUuid())) {
                iter.remove();
            }
        }
        for (final VM vm : vms) {
            vm.getRecord(conn);
            try {
                citrixResourceBase.scaleVM(conn, vm, vmSpec, host);
            } catch (final Exception e) {
                final String msg = "Catch exception " + e.getClass().getName() + " when scaling VM:" + vmName + " due to " + e.toString();
                s_logger.debug(msg);
                return new ScaleVmAnswer(command, false, msg);
            }
        }
        final String msg = "scaling VM " + vmName + " is successful on host " + host;
        s_logger.debug(msg);
        return new ScaleVmAnswer(command, true, msg);
    } catch (final XenAPIException e) {
        final String msg = "Upgrade Vm " + vmName + " fail due to " + e.toString();
        s_logger.warn(msg, e);
        return new ScaleVmAnswer(command, false, msg);
    } catch (final XmlRpcException e) {
        final String msg = "Upgrade Vm " + vmName + " fail due to " + e.getMessage();
        s_logger.warn(msg, e);
        return new ScaleVmAnswer(command, false, msg);
    } catch (final Exception e) {
        final String msg = "Unable to upgrade " + vmName + " due to " + e.getMessage();
        s_logger.warn(msg, e);
        return new ScaleVmAnswer(command, false, msg);
    }
}
Also used : Connection(com.xensource.xenapi.Connection) XenAPIException(com.xensource.xenapi.Types.XenAPIException) Host(com.xensource.xenapi.Host) VirtualMachineTO(com.cloud.legacymodel.to.VirtualMachineTO) CloudRuntimeException(com.cloud.legacymodel.exceptions.CloudRuntimeException) XmlRpcException(org.apache.xmlrpc.XmlRpcException) XenAPIException(com.xensource.xenapi.Types.XenAPIException) ScaleVmAnswer(com.cloud.legacymodel.communication.answer.ScaleVmAnswer) CloudRuntimeException(com.cloud.legacymodel.exceptions.CloudRuntimeException) VM(com.xensource.xenapi.VM) XmlRpcException(org.apache.xmlrpc.XmlRpcException)

Aggregations

ScaleVmAnswer (com.cloud.legacymodel.communication.answer.ScaleVmAnswer)2 DeployDestination (com.cloud.deploy.DeployDestination)1 ScaleVmCommand (com.cloud.legacymodel.communication.command.ScaleVmCommand)1 CloudRuntimeException (com.cloud.legacymodel.exceptions.CloudRuntimeException)1 VirtualMachineTO (com.cloud.legacymodel.to.VirtualMachineTO)1 ServiceOfferingVO (com.cloud.service.ServiceOfferingVO)1 Connection (com.xensource.xenapi.Connection)1 Host (com.xensource.xenapi.Host)1 XenAPIException (com.xensource.xenapi.Types.XenAPIException)1 VM (com.xensource.xenapi.VM)1 XmlRpcException (org.apache.xmlrpc.XmlRpcException)1 Test (org.junit.Test)1