Search in sources :

Example 21 with StoragePool

use of org.libvirt.StoragePool in project CloudStack-archive by CloudStack-extras.

the class LibvirtStorageAdaptor method getStoragePoolbyURI.

public StoragePool getStoragePoolbyURI(Connect conn, URI uri) throws LibvirtException {
    String sourcePath;
    String uuid;
    String sourceHost = "";
    String protocal;
    if (uri.getScheme().equalsIgnoreCase("local")) {
        sourcePath = _mountPoint + File.separator + uri.toString().replace("local:///", "");
        sourcePath = sourcePath.replace("//", "/");
        uuid = UUID.nameUUIDFromBytes(new String(sourcePath).getBytes()).toString();
        protocal = "DIR";
    } else {
        sourcePath = uri.getPath();
        sourcePath = sourcePath.replace("//", "/");
        sourceHost = uri.getHost();
        uuid = UUID.nameUUIDFromBytes(new String(sourceHost + sourcePath).getBytes()).toString();
        protocal = "NFS";
    }
    String targetPath = _mountPoint + File.separator + uuid;
    StoragePool sp = null;
    try {
        sp = conn.storagePoolLookupByUUIDString(uuid);
    } catch (LibvirtException e) {
    }
    if (sp == null) {
        try {
            LibvirtStoragePoolDef spd = null;
            if (protocal.equalsIgnoreCase("NFS")) {
                _storageLayer.mkdir(targetPath);
                spd = new LibvirtStoragePoolDef(poolType.NETFS, uuid, uuid, sourceHost, sourcePath, targetPath);
                s_logger.debug(spd.toString());
            // addStoragePool(uuid);
            } else if (protocal.equalsIgnoreCase("DIR")) {
                _storageLayer.mkdir(targetPath);
                spd = new LibvirtStoragePoolDef(poolType.DIR, uuid, uuid, null, null, sourcePath);
            }
            synchronized (getStoragePool(uuid)) {
                sp = conn.storagePoolDefineXML(spd.toString(), 0);
                if (sp == null) {
                    s_logger.debug("Failed to define storage pool");
                    return null;
                }
                sp.create(0);
            }
            return sp;
        } catch (LibvirtException e) {
            try {
                if (sp != null) {
                    sp.undefine();
                    sp.free();
                }
            } catch (LibvirtException l) {
            }
            throw e;
        }
    } else {
        StoragePoolInfo spi = sp.getInfo();
        if (spi.state != StoragePoolState.VIR_STORAGE_POOL_RUNNING) {
            sp.create(0);
        }
        return sp;
    }
}
Also used : StoragePool(org.libvirt.StoragePool) LibvirtException(org.libvirt.LibvirtException) StoragePoolInfo(org.libvirt.StoragePoolInfo) LibvirtStoragePoolDef(com.cloud.agent.resource.computing.LibvirtStoragePoolDef)

Example 22 with StoragePool

use of org.libvirt.StoragePool in project CloudStack-archive by CloudStack-extras.

the class LibvirtStorageAdaptor method refresh.

@Override
public boolean refresh(KVMStoragePool pool) {
    LibvirtStoragePool libvirtPool = (LibvirtStoragePool) pool;
    StoragePool virtPool = libvirtPool.getPool();
    try {
        virtPool.refresh(0);
    } catch (LibvirtException e) {
        return false;
    }
    return true;
}
Also used : StoragePool(org.libvirt.StoragePool) LibvirtException(org.libvirt.LibvirtException)

Example 23 with StoragePool

use of org.libvirt.StoragePool in project CloudStack-archive by CloudStack-extras.

the class KVMHABase method getMountPoint.

protected String getMountPoint(NfsStoragePool storagePool) {
    StoragePool pool = null;
    String poolName = null;
    try {
        pool = LibvirtConnection.getConnection().storagePoolLookupByUUIDString(storagePool._poolUUID);
        if (pool != null) {
            StoragePoolInfo spi = pool.getInfo();
            if (spi.state != StoragePoolState.VIR_STORAGE_POOL_RUNNING) {
                pool.create(0);
            } else {
            /*
					 * Sometimes, the mount point is lost, even libvirt thinks
					 * the storage pool still running
					 */
            }
        }
        poolName = pool.getName();
    } catch (LibvirtException e) {
    } finally {
        try {
            if (pool != null) {
                pool.free();
            }
        } catch (LibvirtException e) {
        }
    }
    return checkingMountPoint(storagePool, poolName);
}
Also used : StoragePool(org.libvirt.StoragePool) LibvirtException(org.libvirt.LibvirtException) StoragePoolInfo(org.libvirt.StoragePoolInfo)

Example 24 with StoragePool

use of org.libvirt.StoragePool in project cloudstack by apache.

the class LibvirtStorageAdaptor method createCLVMStoragePool.

private StoragePool createCLVMStoragePool(Connect conn, String uuid, String host, String path) {
    String volgroupPath = "/dev/" + path;
    String volgroupName = path;
    volgroupName = volgroupName.replaceFirst("/", "");
    LibvirtStoragePoolDef spd = new LibvirtStoragePoolDef(PoolType.LOGICAL, volgroupName, uuid, host, volgroupPath, volgroupPath);
    StoragePool sp = null;
    try {
        s_logger.debug(spd.toString());
        sp = conn.storagePoolCreateXML(spd.toString(), 0);
        return sp;
    } catch (LibvirtException e) {
        s_logger.error(e.toString());
        if (sp != null) {
            try {
                if (sp.isPersistent() == 1) {
                    sp.destroy();
                    sp.undefine();
                } else {
                    sp.destroy();
                }
                sp.free();
            } catch (LibvirtException l) {
                s_logger.debug("Failed to define clvm storage pool with: " + l.toString());
            }
        }
        return null;
    }
}
Also used : StoragePool(org.libvirt.StoragePool) LibvirtException(org.libvirt.LibvirtException) LibvirtStoragePoolDef(com.cloud.hypervisor.kvm.resource.LibvirtStoragePoolDef)

Example 25 with StoragePool

use of org.libvirt.StoragePool in project cloudstack by apache.

the class LibvirtStorageAdaptor method createPhysicalDiskByLibVirt.

private KVMPhysicalDisk createPhysicalDiskByLibVirt(String name, KVMStoragePool pool, PhysicalDiskFormat format, Storage.ProvisioningType provisioningType, long size) {
    LibvirtStoragePool libvirtPool = (LibvirtStoragePool) pool;
    StoragePool virtPool = libvirtPool.getPool();
    LibvirtStorageVolumeDef.VolumeFormat libvirtformat = LibvirtStorageVolumeDef.VolumeFormat.getFormat(format);
    String volPath = null;
    String volName = null;
    long volAllocation = 0;
    long volCapacity = 0;
    LibvirtStorageVolumeDef volDef = new LibvirtStorageVolumeDef(name, size, libvirtformat, null, null);
    s_logger.debug(volDef.toString());
    try {
        StorageVol vol = virtPool.storageVolCreateXML(volDef.toString(), 0);
        volPath = vol.getPath();
        volName = vol.getName();
        volAllocation = vol.getInfo().allocation;
        volCapacity = vol.getInfo().capacity;
    } catch (LibvirtException e) {
        throw new CloudRuntimeException(e.toString());
    }
    KVMPhysicalDisk disk = new KVMPhysicalDisk(volPath, volName, pool);
    disk.setFormat(format);
    disk.setSize(volAllocation);
    disk.setVirtualSize(volCapacity);
    return disk;
}
Also used : VolumeFormat(com.cloud.hypervisor.kvm.resource.LibvirtStorageVolumeDef.VolumeFormat) StoragePool(org.libvirt.StoragePool) LibvirtStorageVolumeDef(com.cloud.hypervisor.kvm.resource.LibvirtStorageVolumeDef) StorageVol(org.libvirt.StorageVol) LibvirtException(org.libvirt.LibvirtException) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException)

Aggregations

StoragePool (org.libvirt.StoragePool)31 LibvirtException (org.libvirt.LibvirtException)27 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)13 Connect (org.libvirt.Connect)8 LibvirtStoragePoolDef (com.cloud.agent.resource.computing.LibvirtStoragePoolDef)7 LibvirtStoragePoolDef (com.cloud.hypervisor.kvm.resource.LibvirtStoragePoolDef)7 StoragePoolInfo (org.libvirt.StoragePoolInfo)6 StorageVol (org.libvirt.StorageVol)4 StoragePoolType (com.cloud.storage.Storage.StoragePoolType)3 Secret (org.libvirt.Secret)3 LibvirtStorageVolumeDef (com.cloud.hypervisor.kvm.resource.LibvirtStorageVolumeDef)2 ArrayList (java.util.ArrayList)2 LibvirtStorageVolumeDef (com.cloud.agent.resource.computing.LibvirtStorageVolumeDef)1 LibvirtStorageVolumeDef.volFormat (com.cloud.agent.resource.computing.LibvirtStorageVolumeDef.volFormat)1 LibvirtSecretDef (com.cloud.hypervisor.kvm.resource.LibvirtSecretDef)1 VolumeFormat (com.cloud.hypervisor.kvm.resource.LibvirtStorageVolumeDef.VolumeFormat)1 File (java.io.File)1 URI (java.net.URI)1