Fix of shrinking volumes with QCOW2 format (#5225)

* Fix of shrinking volumes with QCOW2 format

If the volumes are with QCOW2 format the shrinking will be handled on
the agents side. There are cases in some storage plugins where the
volumes' format is kept in the DB in QCOW2 but the actual format is raw.
Till the current implementation this was limiting the plugins to shrink
the volumes. Now this will be handled by the storage plugins

* Addressed @nvazquez suggested change

Will log the exception instead the exception message
This commit is contained in:
slavkap 2021-07-26 14:37:47 +03:00 committed by GitHub
parent 29090fe4ab
commit 446337b4cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 1 additions and 9 deletions

View File

@ -1063,14 +1063,6 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
* This will be checked again at the hypervisor level where we can see
* the actual disk size.
*/
if (currentSize > newSize) {
VolumeVO vol = _volsDao.findById(cmd.getEntityId());
if (vol != null && ImageFormat.QCOW2.equals(vol.getFormat()) && !Volume.State.Allocated.equals(volume.getState())) {
String message = "Unable to shrink volumes of type QCOW2";
s_logger.warn(message);
throw new InvalidParameterValueException(message);
}
}
if (currentSize > newSize && !shrinkOk) {
throw new InvalidParameterValueException("Going from existing size of " + currentSize + " to size of " + newSize + " would shrink the volume."
+ "Need to sign off by supplying the shrinkok parameter with value of true.");
@ -1323,7 +1315,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
return volume;
} catch (Exception e) {
throw new CloudRuntimeException("Exception caught during resize volume operation of volume UUID: " + volume.getUuid(), e);
throw new CloudRuntimeException(String.format("Failed to resize volume operation of volume UUID: [%s] due to - %s", volume.getUuid(), e.getMessage()), e);
}
}