nvazquez commented on a change in pull request #5349:
URL: https://github.com/apache/cloudstack/pull/5349#discussion_r693890850
##########
File path:
plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
##########
@@ -1639,6 +1673,74 @@ public Answer createVolumeFromSnapshot(final CopyCommand
cmd) {
}
}
+ private KVMPhysicalDisk createRBDvolumeFromRBDSnapshot(KVMPhysicalDisk
volume, String snapshotName, String name,
+ PhysicalDiskFormat format, long size, KVMStoragePool destPool, int
timeout) {
+
+ KVMStoragePool srcPool = volume.getPool();
+ KVMPhysicalDisk disk = null;
+ String newUuid = name;
+ int rbdFeatures = 61;
+
+ format = PhysicalDiskFormat.RAW;
+ disk = new KVMPhysicalDisk(destPool.getSourceDir() + "/" + newUuid,
newUuid, destPool);
+ disk.setFormat(format);
+ if (size > volume.getVirtualSize()) {
Review comment:
What about:
````
disk.setSize(size > volume.getVirtualSize() ? size :
volume.getVirtualSize());
disk.setVirtualSize(size > volume.getVirtualSize() ? size : disk.getSize());
````
##########
File path:
plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
##########
@@ -1639,6 +1673,74 @@ public Answer createVolumeFromSnapshot(final CopyCommand
cmd) {
}
}
+ private KVMPhysicalDisk createRBDvolumeFromRBDSnapshot(KVMPhysicalDisk
volume, String snapshotName, String name,
+ PhysicalDiskFormat format, long size, KVMStoragePool destPool, int
timeout) {
+
+ KVMStoragePool srcPool = volume.getPool();
+ KVMPhysicalDisk disk = null;
+ String newUuid = name;
+ int rbdFeatures = 61;
Review comment:
Minor: if this is the same as `LibvirtStorageAdaptor.rbdFeatures`, can
we expose it and use it instead of a new variable on this method?
##########
File path:
plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
##########
@@ -1639,6 +1673,74 @@ public Answer createVolumeFromSnapshot(final CopyCommand
cmd) {
}
}
+ private KVMPhysicalDisk createRBDvolumeFromRBDSnapshot(KVMPhysicalDisk
volume, String snapshotName, String name,
+ PhysicalDiskFormat format, long size, KVMStoragePool destPool, int
timeout) {
+
+ KVMStoragePool srcPool = volume.getPool();
+ KVMPhysicalDisk disk = null;
+ String newUuid = name;
+ int rbdFeatures = 61;
+
+ format = PhysicalDiskFormat.RAW;
+ disk = new KVMPhysicalDisk(destPool.getSourceDir() + "/" + newUuid,
newUuid, destPool);
+ disk.setFormat(format);
+ if (size > volume.getVirtualSize()) {
+ disk.setSize(size);
+ disk.setVirtualSize(size);
+ } else {
+ disk.setSize(volume.getVirtualSize());
+ disk.setVirtualSize(disk.getSize());
+ }
+
+ try {
+
+ Rados r = new Rados(srcPool.getAuthUserName());
+ r.confSet("mon_host", srcPool.getSourceHost() + ":" +
srcPool.getSourcePort());
+ r.confSet("key", srcPool.getAuthSecret());
+ r.confSet("client_mount_timeout", "30");
+ r.connect();
+
+ IoCTX io = r.ioCtxCreate(srcPool.getSourceDir());
+ Rbd rbd = new Rbd(io);
+ RbdImage srcImage = rbd.open(volume.getName());
+
+ List<RbdSnapInfo> snaps = srcImage.snapList();
+ boolean snapFound = false;
+ for (RbdSnapInfo snap : snaps) {
+ if (snapshotName.equals(snap.name)) {
+ snapFound = true;
+ break;
+ }
+ }
+
+ if (!snapFound) {
+ return null;
Review comment:
Maybe add a log line as well to help debugging/tracing errors?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]