private StorageAdaptor getStorageAdaptor(StoragePoolType type) { // type can be null: LibVirtComputingResource:3238 if (type == null) { return _storageMapper.get("libvirt"); } StorageAdaptor adaptor = _storageMapper.get(type.toString()); if (adaptor == null) { // LibvirtStorageAdaptor is selected by default adaptor = _storageMapper.get("libvirt"); } return adaptor; }
protected SR prepareManagedSr(final Connection conn, final Map<String, String> details) { final String iScsiName = details.get(DiskTO.IQN); final String storageHost = details.get(DiskTO.STORAGE_HOST); final String chapInitiatorUsername = details.get(DiskTO.CHAP_INITIATOR_USERNAME); final String chapInitiatorSecret = details.get(DiskTO.CHAP_INITIATOR_SECRET); final String mountpoint = details.get(DiskTO.MOUNT_POINT); final String protocoltype = details.get(DiskTO.PROTOCOL_TYPE); if (StoragePoolType.NetworkFilesystem.toString().equalsIgnoreCase(protocoltype)) { final String poolid = storageHost + ":" + mountpoint; final String namelable = mountpoint; final String volumedesc = storageHost + ":" + mountpoint; return getNfsSR(conn, poolid, namelable, storageHost, mountpoint, volumedesc); } else { return getIscsiSR(conn, iScsiName, storageHost, iScsiName, chapInitiatorUsername, chapInitiatorSecret, false, SRType.LVMOISCSI.toString(), true); } }
public KVMStoragePoolManager(StorageLayer storagelayer, KVMHAMonitor monitor) { this._haMonitor = monitor; this._storageMapper.put("libvirt", new LibvirtStorageAdaptor(storagelayer)); // add other storage adaptors here // this._storageMapper.put("newadaptor", new NewStorageAdaptor(storagelayer)); this._storageMapper.put(StoragePoolType.ManagedNFS.toString(), new ManagedNfsStorageAdaptor(storagelayer)); // add any adaptors that wish to register themselves via annotation Reflections reflections = new Reflections("com.cloud.hypervisor.kvm.storage"); Set<Class<? extends StorageAdaptor>> storageAdaptors = reflections.getSubTypesOf(StorageAdaptor.class); for (Class<? extends StorageAdaptor> storageAdaptor : storageAdaptors) { StorageAdaptorInfo info = storageAdaptor.getAnnotation(StorageAdaptorInfo.class); if (info != null && info.storagePoolType() != null) { if (this._storageMapper.containsKey(info.storagePoolType().toString())) { s_logger.error("Duplicate StorageAdaptor type " + info.storagePoolType().toString() + ", not loading " + storageAdaptor.getName()); } else { try { this._storageMapper.put(info.storagePoolType().toString(), storageAdaptor.newInstance()); } catch (Exception ex) { throw new CloudRuntimeException(ex.toString()); } } } } for (Map.Entry<String, StorageAdaptor> adaptors : this._storageMapper.entrySet()) { s_logger.debug("Registered a StorageAdaptor for " + adaptors.getKey()); } }
details.put(DiskTO.IQN, volumeToAttach.get_iScsiName()); details.put(DiskTO.MOUNT_POINT, volumeToAttach.get_iScsiName()); details.put(DiskTO.PROTOCOL_TYPE, (volumeToAttach.getPoolType() != null) ? volumeToAttach.getPoolType().toString() : null);
@Override public KVMStoragePool createStoragePool(String name, String host, int port, String path, String userInfo, StoragePoolType type) { s_logger.info("Attempting to create storage pool " + name + " (" + type.toString() + ") in libvirt");
" (" + destPool.getType().toString() + ") with size " + size);
params.put("clusterId", host.getClusterId()); params.put("podId", host.getPodId()); params.put("url", pInfo.getPoolType().toString() + "://" + pInfo.getHost() + "/" + pInfo.getHostPath()); params.put("name", name); params.put("localStorage", true);
poolResponse.setZoneId(pool.getZoneUuid()); poolResponse.setZoneName(pool.getZoneName()); poolResponse.setType(pool.getPoolType().toString()); poolResponse.setPodId(pool.getPodUuid()); poolResponse.setPodName(pool.getPodName());
primaryPool.getType().toString() + " pool."); } catch (RbdException e) { s_logger.error("Failed to remove snapshot " + snap_full_name + ", with exception: " + e.toString() + s_logger.warn("Operation not implemented for storage pool type of " + primaryPool.getType().toString()); throw new InternalErrorException("Operation not implemented for storage pool type of " + primaryPool.getType().toString());
s_logger.debug("Found storage pool " + storagePool.getName() + " of type " + storagePool.getPoolType().toString() + " with overprovisioning factor " + overProvFactor.toString()); s_logger.debug("Total over provisioned capacity calculated is " + overProvFactor + " * " + storagePool.getCapacityBytes()); } else { s_logger.debug("Found storage pool " + storagePool.getName() + " of type " + storagePool.getPoolType().toString()); totalOverProvCapacity = storagePool.getCapacityBytes();
details.put(NexentaUtil.SPARSE_VOLUMES, params.isSparseVolumes().toString()); details.put(NexentaUtil.STORAGE_TYPE, params.getStorageType().toString()); details.put(NexentaUtil.STORAGE_HOST, params.getStorageHost()); details.put(NexentaUtil.STORAGE_PORT, params.getStoragePort().toString());
s_logger.debug("Found storage pool " + poolVO.getName() + " of type " + pool.getPoolType().toString() + " with over-provisioning factor " + overProvFactor.toString()); s_logger.debug("Total over-provisioned capacity calculated is " + overProvFactor + " * " + pool.getCapacityBytes()); } else { totalOverProvCapacity = pool.getCapacityBytes(); s_logger.debug("Found storage pool " + poolVO.getName() + " of type " + pool.getPoolType().toString());
poolResponse.setZoneName(pool.getZoneName()); if (pool.getPoolType() != null) { poolResponse.setType(pool.getPoolType().toString());
final PrimaryDataStoreTO pool = cmd.getDestPool(); if (!pool.getPoolType().equals(StoragePoolType.NetworkFilesystem)) { return new DirectDownloadAnswer(false, "Unsupported pool type " + pool.getPoolType().toString(), true);
@Override public KVMPhysicalDisk createPhysicalDisk(String name, KVMStoragePool pool, PhysicalDiskFormat format, Storage.ProvisioningType provisioningType, long size) { s_logger.info("Attempting to create volume " + name + " (" + pool.getType().toString() + ") in pool " + pool.getUuid() + " with size " + size); switch (pool.getType()) { case RBD: return createPhysicalDiskByLibVirt(name, pool, PhysicalDiskFormat.RAW, provisioningType, size); case NetworkFilesystem: case Filesystem: switch (format) { case QCOW2: return createPhysicalDiskByQemuImg(name, pool, format, provisioningType, size); case RAW: return createPhysicalDiskByQemuImg(name, pool, format, provisioningType, size); case DIR: return createPhysicalDiskByLibVirt(name, pool, format, provisioningType, size); case TAR: return createPhysicalDiskByLibVirt(name, pool, format, provisioningType, size); default: throw new CloudRuntimeException("Unexpected disk format is specified."); } default: return createPhysicalDiskByLibVirt(name, pool, format, provisioningType, size); } }
private Map<String, String> getDetails(VolumeInfo volumeInfo, DataStore dataStore) { Map<String, String> details = new HashMap<String, String>(); StoragePoolVO storagePool = _storagePoolDao.findById(dataStore.getId()); details.put(DiskTO.MANAGED, String.valueOf(storagePool.isManaged())); details.put(DiskTO.STORAGE_HOST, storagePool.getHostAddress()); details.put(DiskTO.STORAGE_PORT, String.valueOf(storagePool.getPort())); details.put(DiskTO.VOLUME_SIZE, String.valueOf(volumeInfo.getSize())); details.put(DiskTO.IQN, volumeInfo.get_iScsiName()); details.put(DiskTO.MOUNT_POINT, volumeInfo.get_iScsiName()); VolumeVO volume = _volumeDao.findById(volumeInfo.getId()); details.put(DiskTO.PROTOCOL_TYPE, (volume.getPoolType() != null) ? volume.getPoolType().toString() : null); ChapInfo chapInfo = volService.getChapInfo(volumeInfo, dataStore); if (chapInfo != null) { details.put(DiskTO.CHAP_INITIATOR_USERNAME, chapInfo.getInitiatorUsername()); details.put(DiskTO.CHAP_INITIATOR_SECRET, chapInfo.getInitiatorSecret()); details.put(DiskTO.CHAP_TARGET_USERNAME, chapInfo.getTargetUsername()); details.put(DiskTO.CHAP_TARGET_SECRET, chapInfo.getTargetSecret()); } return details; }