Search in sources :

Example 21 with InternalErrorException

use of com.cloud.exception.InternalErrorException in project cloudstack by apache.

the class LibvirtComputingResourceTest method testStartCommandHostMemory.

@Test
public void testStartCommandHostMemory() {
    final VirtualMachineTO vmSpec = Mockito.mock(VirtualMachineTO.class);
    final com.cloud.host.Host host = Mockito.mock(com.cloud.host.Host.class);
    final boolean executeInSequence = false;
    final StartCommand command = new StartCommand(vmSpec, host, executeInSequence);
    final KVMStoragePoolManager storagePoolMgr = Mockito.mock(KVMStoragePoolManager.class);
    final LibvirtUtilitiesHelper libvirtUtilitiesHelper = Mockito.mock(LibvirtUtilitiesHelper.class);
    final Connect conn = Mockito.mock(Connect.class);
    final LibvirtVMDef vmDef = Mockito.mock(LibvirtVMDef.class);
    final NicTO nic = Mockito.mock(NicTO.class);
    final NicTO[] nics = new NicTO[] { nic };
    int vmId = 1;
    final int[] vms = new int[] { vmId };
    final Domain dm = Mockito.mock(Domain.class);
    final String vmName = "Test";
    when(libvirtComputingResource.getStoragePoolMgr()).thenReturn(storagePoolMgr);
    when(vmSpec.getNics()).thenReturn(nics);
    when(vmSpec.getType()).thenReturn(VirtualMachine.Type.User);
    when(vmSpec.getName()).thenReturn(vmName);
    when(vmSpec.getMaxRam()).thenReturn(512L);
    when(libvirtComputingResource.createVMFromSpec(vmSpec)).thenReturn(vmDef);
    when(libvirtComputingResource.getLibvirtUtilitiesHelper()).thenReturn(libvirtUtilitiesHelper);
    try {
        when(libvirtUtilitiesHelper.getConnectionByType(vmDef.getHvsType())).thenReturn(conn);
        when(conn.listDomains()).thenReturn(vms);
        when(conn.domainLookupByID(vmId)).thenReturn(dm);
        when(dm.getMaxMemory()).thenReturn(1024L);
        when(dm.getName()).thenReturn(vmName);
        when(libvirtComputingResource.getTotalMemory()).thenReturn(2048 * 1024L);
        doNothing().when(libvirtComputingResource).createVbd(conn, vmSpec, vmName, vmDef);
    } catch (final LibvirtException e) {
        fail(e.getMessage());
    } catch (final InternalErrorException e) {
        fail(e.getMessage());
    } catch (final URISyntaxException e) {
        fail(e.getMessage());
    }
    when(storagePoolMgr.connectPhysicalDisksViaVmSpec(vmSpec)).thenReturn(true);
    final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
    assertNotNull(wrapper);
    final Answer answer = wrapper.execute(command, libvirtComputingResource);
    assertTrue(answer.getResult());
}
Also used : KVMStoragePoolManager(com.cloud.hypervisor.kvm.storage.KVMStoragePoolManager) LibvirtException(org.libvirt.LibvirtException) StartCommand(com.cloud.agent.api.StartCommand) Connect(org.libvirt.Connect) InternalErrorException(com.cloud.exception.InternalErrorException) URISyntaxException(java.net.URISyntaxException) VirtualMachineTO(com.cloud.agent.api.to.VirtualMachineTO) LibvirtUtilitiesHelper(com.cloud.hypervisor.kvm.resource.wrapper.LibvirtUtilitiesHelper) AttachAnswer(org.apache.cloudstack.storage.command.AttachAnswer) Answer(com.cloud.agent.api.Answer) CheckRouterAnswer(com.cloud.agent.api.CheckRouterAnswer) LibvirtRequestWrapper(com.cloud.hypervisor.kvm.resource.wrapper.LibvirtRequestWrapper) Domain(org.libvirt.Domain) NicTO(com.cloud.agent.api.to.NicTO) Test(org.junit.Test)

Example 22 with InternalErrorException

use of com.cloud.exception.InternalErrorException in project cloudstack by apache.

the class LibvirtComputingResourceTest method testStartCommandInternalError.

@Test
public void testStartCommandInternalError() {
    final VirtualMachineTO vmSpec = Mockito.mock(VirtualMachineTO.class);
    final com.cloud.host.Host host = Mockito.mock(com.cloud.host.Host.class);
    final boolean executeInSequence = false;
    final StartCommand command = new StartCommand(vmSpec, host, executeInSequence);
    final KVMStoragePoolManager storagePoolMgr = Mockito.mock(KVMStoragePoolManager.class);
    final LibvirtUtilitiesHelper libvirtUtilitiesHelper = Mockito.mock(LibvirtUtilitiesHelper.class);
    final Connect conn = Mockito.mock(Connect.class);
    final LibvirtVMDef vmDef = Mockito.mock(LibvirtVMDef.class);
    final NicTO nic = Mockito.mock(NicTO.class);
    final NicTO[] nics = new NicTO[] { nic };
    final String vmName = "Test";
    when(libvirtComputingResource.getStoragePoolMgr()).thenReturn(storagePoolMgr);
    when(vmSpec.getNics()).thenReturn(nics);
    when(vmSpec.getType()).thenReturn(VirtualMachine.Type.DomainRouter);
    when(vmSpec.getName()).thenReturn(vmName);
    when(libvirtComputingResource.createVMFromSpec(vmSpec)).thenReturn(vmDef);
    when(libvirtComputingResource.getLibvirtUtilitiesHelper()).thenReturn(libvirtUtilitiesHelper);
    try {
        when(libvirtUtilitiesHelper.getConnectionByType(vmDef.getHvsType())).thenReturn(conn);
        doThrow(InternalErrorException.class).when(libvirtComputingResource).createVbd(conn, vmSpec, vmName, vmDef);
    } catch (final LibvirtException e) {
        fail(e.getMessage());
    } catch (final InternalErrorException e) {
        fail(e.getMessage());
    } catch (final URISyntaxException e) {
        fail(e.getMessage());
    }
    final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
    assertNotNull(wrapper);
    final Answer answer = wrapper.execute(command, libvirtComputingResource);
    assertFalse(answer.getResult());
    verify(libvirtComputingResource, times(1)).getStoragePoolMgr();
    verify(libvirtComputingResource, times(1)).getLibvirtUtilitiesHelper();
    try {
        verify(libvirtUtilitiesHelper, times(1)).getConnectionByType(vmDef.getHvsType());
    } catch (final LibvirtException e) {
        fail(e.getMessage());
    }
}
Also used : KVMStoragePoolManager(com.cloud.hypervisor.kvm.storage.KVMStoragePoolManager) LibvirtException(org.libvirt.LibvirtException) StartCommand(com.cloud.agent.api.StartCommand) Connect(org.libvirt.Connect) InternalErrorException(com.cloud.exception.InternalErrorException) URISyntaxException(java.net.URISyntaxException) VirtualMachineTO(com.cloud.agent.api.to.VirtualMachineTO) LibvirtUtilitiesHelper(com.cloud.hypervisor.kvm.resource.wrapper.LibvirtUtilitiesHelper) AttachAnswer(org.apache.cloudstack.storage.command.AttachAnswer) Answer(com.cloud.agent.api.Answer) CheckRouterAnswer(com.cloud.agent.api.CheckRouterAnswer) LibvirtRequestWrapper(com.cloud.hypervisor.kvm.resource.wrapper.LibvirtRequestWrapper) NicTO(com.cloud.agent.api.to.NicTO) Test(org.junit.Test)

Example 23 with InternalErrorException

use of com.cloud.exception.InternalErrorException in project cloudstack by apache.

the class VirtualNetworkModel method update.

@Override
public void update(ModelController controller) throws InternalErrorException, IOException {
    assert _initialized;
    ApiConnector api = controller.getApiAccessor();
    VlanDao vlanDao = controller.getVlanDao();
    VirtualNetwork vn = _vn;
    if (!isDynamicNetwork()) {
        _vn = (VirtualNetwork) controller.getApiAccessor().findById(VirtualNetwork.class, _uuid);
        return;
    }
    assert _uuid != null : "uuid is not set";
    if (_vn == null) {
        vn = _vn = (VirtualNetwork) controller.getApiAccessor().findById(VirtualNetwork.class, _uuid);
        if (vn == null) {
            vn = new VirtualNetwork();
            if (_projectId != null) {
                Project project;
                try {
                    project = (Project) api.findById(Project.class, _projectId);
                } catch (IOException ex) {
                    s_logger.debug("project read", ex);
                    throw new CloudRuntimeException("Failed to read project", ex);
                }
                vn.setParent(project);
            }
            vn.setName(_name);
            vn.setUuid(_uuid);
        }
    }
    if (_policyModel == null) {
        vn.clearNetworkPolicy();
    } else if (!_policyModel.hasPolicyRules()) {
        vn.clearNetworkPolicy();
        _policyModel.removeSuccessor(this);
    } else {
        vn.setNetworkPolicy(_policyModel.getPolicy(), new VirtualNetworkPolicyType(new VirtualNetworkPolicyType.SequenceType(1, 0), null));
    }
    if (_ipam == null) {
        NetworkIpam ipam = null;
        try {
            String ipam_id = api.findByName(NetworkIpam.class, null, "default-network-ipam");
            if (ipam_id == null) {
                s_logger.debug("could not find default-network-ipam");
                return;
            }
            ipam = (NetworkIpam) api.findById(NetworkIpam.class, ipam_id);
            if (ipam == null) {
                s_logger.debug("could not find NetworkIpam with ipam_id: " + ipam_id);
                return;
            }
        } catch (IOException ex) {
            s_logger.error(ex);
            return;
        }
        _ipam = ipam;
    }
    if (_prefix != null) {
        VnSubnetsType subnet = new VnSubnetsType();
        String[] addr_pair = _prefix.split("\\/");
        subnet.addIpamSubnets(new SubnetType(addr_pair[0], Integer.parseInt(addr_pair[1])), _gateway);
        vn.setNetworkIpam(_ipam, subnet);
    } else if (_trafficType == TrafficType.Public) {
        vn.clearNetworkIpam();
        /* Subnet information for Public is stored in the vlan table */
        List<VlanVO> vlan_list = vlanDao.listVlansByNetworkId(_id);
        for (VlanVO vlan : vlan_list) {
            String cidr = NetUtils.ipAndNetMaskToCidr(vlan.getVlanGateway(), vlan.getVlanNetmask());
            int slash = cidr.indexOf('/');
            String ip_addr = cidr.substring(0, slash);
            int plen = Integer.parseInt(cidr.substring(slash + 1));
            VnSubnetsType subnet = new VnSubnetsType();
            subnet.addIpamSubnets(new SubnetType(ip_addr, plen), vlan.getVlanGateway());
            vn.addNetworkIpam(_ipam, subnet);
        }
    }
    if (_vn == null) {
        try {
            api.create(vn);
        } catch (Exception ex) {
            s_logger.debug("virtual-network create", ex);
            throw new CloudRuntimeException("Failed to create virtual-network", ex);
        }
        _vn = vn;
    } else {
        try {
            api.update(vn);
        } catch (IOException ex) {
            s_logger.warn("virtual-network update", ex);
            throw new CloudRuntimeException("Unable to update virtual-network object", ex);
        }
    }
    for (ModelObject successor : successors()) {
        successor.update(controller);
    }
}
Also used : VirtualNetworkPolicyType(net.juniper.contrail.api.types.VirtualNetworkPolicyType) VlanDao(com.cloud.dc.dao.VlanDao) ApiConnector(net.juniper.contrail.api.ApiConnector) IOException(java.io.IOException) SubnetType(net.juniper.contrail.api.types.SubnetType) InternalErrorException(com.cloud.exception.InternalErrorException) IOException(java.io.IOException) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) VirtualNetwork(net.juniper.contrail.api.types.VirtualNetwork) Project(net.juniper.contrail.api.types.Project) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) NetworkIpam(net.juniper.contrail.api.types.NetworkIpam) ArrayList(java.util.ArrayList) List(java.util.List) VlanVO(com.cloud.dc.VlanVO) VnSubnetsType(net.juniper.contrail.api.types.VnSubnetsType)

Example 24 with InternalErrorException

use of com.cloud.exception.InternalErrorException in project cloudstack by apache.

the class ServerDBSyncImpl method createVirtualNetwork.

public void createVirtualNetwork(NetworkVO dbNet, StringBuffer syncLogMesg) throws IOException {
    syncLogMesg.append("VN# DB: " + _manager.getCanonicalName(dbNet) + "(" + dbNet.getUuid() + "); VNC: none;  action: create\n");
    if (_manager.getDatabase().lookupVirtualNetwork(dbNet.getUuid(), _manager.getCanonicalName(dbNet), dbNet.getTrafficType()) != null) {
        s_logger.warn("VN model object is already present in DB: " + dbNet.getUuid() + ", name: " + dbNet.getName());
    }
    VirtualNetworkModel vnModel = new VirtualNetworkModel(dbNet, dbNet.getUuid(), _manager.getCanonicalName(dbNet), dbNet.getTrafficType());
    if (dbNet.getTrafficType() == TrafficType.Guest && dbNet.getNetworkACLId() != null) {
        NetworkACLVO acl = _networkACLDao.findById(dbNet.getNetworkACLId());
        NetworkPolicyModel policyModel = _manager.getDatabase().lookupNetworkPolicy(acl.getUuid());
        if (policyModel == null) {
            s_logger.error("Network(" + dbNet.getName() + ") has ACL but policy model not created: " + acl.getUuid() + ", name: " + acl.getName());
        } else {
            vnModel.addToNetworkPolicy(policyModel);
        }
    }
    vnModel.build(_manager.getModelController(), dbNet);
    if (_rwMode) {
        try {
            if (!vnModel.verify(_manager.getModelController())) {
                vnModel.update(_manager.getModelController());
            }
        } catch (InternalErrorException ex) {
            s_logger.warn("create virtual-network", ex);
            syncLogMesg.append("Error: VN# VNC : Unable to create network " + dbNet.getName() + "\n");
            return;
        }
        s_logger.debug("add model " + vnModel.getName());
        _manager.getDatabase().getVirtualNetworks().add(vnModel);
        syncLogMesg.append("VN# VNC: " + dbNet.getUuid() + ", " + vnModel.getName() + " created\n");
    } else {
        syncLogMesg.append("VN# VNC: " + vnModel.getName() + " created \n");
    }
}
Also used : NetworkACLVO(com.cloud.network.vpc.NetworkACLVO) NetworkPolicyModel(org.apache.cloudstack.network.contrail.model.NetworkPolicyModel) InternalErrorException(com.cloud.exception.InternalErrorException) VirtualNetworkModel(org.apache.cloudstack.network.contrail.model.VirtualNetworkModel)

Example 25 with InternalErrorException

use of com.cloud.exception.InternalErrorException in project cloudstack by apache.

the class OVAProcessor method process.

@Override
public FormatInfo process(String templatePath, ImageFormat format, String templateName) throws InternalErrorException {
    if (format != null) {
        if (s_logger.isInfoEnabled()) {
            s_logger.info("We currently don't handle conversion from " + format + " to OVA.");
        }
        return null;
    }
    s_logger.info("Template processing. templatePath: " + templatePath + ", templateName: " + templateName);
    String templateFilePath = templatePath + File.separator + templateName + "." + ImageFormat.OVA.getFileExtension();
    if (!_storage.exists(templateFilePath)) {
        if (s_logger.isInfoEnabled()) {
            s_logger.info("Unable to find the vmware template file: " + templateFilePath);
        }
        return null;
    }
    s_logger.info("Template processing - untar OVA package. templatePath: " + templatePath + ", templateName: " + templateName);
    String templateFileFullPath = templatePath + File.separator + templateName + "." + ImageFormat.OVA.getFileExtension();
    File templateFile = new File(templateFileFullPath);
    Script command = new Script("tar", 0, s_logger);
    command.add("--no-same-owner");
    command.add("-xf", templateFileFullPath);
    command.setWorkDir(templateFile.getParent());
    String result = command.execute();
    if (result != null) {
        s_logger.info("failed to untar OVA package due to " + result + ". templatePath: " + templatePath + ", templateName: " + templateName);
        throw new InternalErrorException("failed to untar OVA package");
    }
    FormatInfo info = new FormatInfo();
    info.format = ImageFormat.OVA;
    info.filename = templateName + "." + ImageFormat.OVA.getFileExtension();
    info.size = _storage.getSize(templateFilePath);
    info.virtualSize = getTemplateVirtualSize(templatePath, info.filename);
    // templateFile.delete();
    return info;
}
Also used : Script(com.cloud.utils.script.Script) InternalErrorException(com.cloud.exception.InternalErrorException) File(java.io.File)

Aggregations

InternalErrorException (com.cloud.exception.InternalErrorException)86 IOException (java.io.IOException)28 LibvirtException (org.libvirt.LibvirtException)27 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)25 Connect (org.libvirt.Connect)23 URISyntaxException (java.net.URISyntaxException)21 ConfigurationException (javax.naming.ConfigurationException)21 Answer (com.cloud.agent.api.Answer)17 AttachAnswer (org.apache.cloudstack.storage.command.AttachAnswer)16 NicTO (com.cloud.agent.api.to.NicTO)15 URI (java.net.URI)15 KVMStoragePoolManager (com.cloud.hypervisor.kvm.storage.KVMStoragePoolManager)14 Script (com.cloud.utils.script.Script)14 Test (org.junit.Test)14 CheckRouterAnswer (com.cloud.agent.api.CheckRouterAnswer)12 LibvirtRequestWrapper (com.cloud.hypervisor.kvm.resource.wrapper.LibvirtRequestWrapper)12 LibvirtUtilitiesHelper (com.cloud.hypervisor.kvm.resource.wrapper.LibvirtUtilitiesHelper)12 PrimaryDataStoreTO (org.apache.cloudstack.storage.to.PrimaryDataStoreTO)12 Processor (com.cloud.storage.template.Processor)11 TemplateLocation (com.cloud.storage.template.TemplateLocation)11