This is an automated email from the ASF dual-hosted git repository. harikrishna pushed a commit to branch CheckVolumeAPI in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit baf02101bb1ff81a7dac92cd7ff3b5abe872079a Author: Harikrishna Patnala <[email protected]> AuthorDate: Wed Jan 31 10:41:59 2024 +0530 Address review comments --- .../cloudstack/storage/volume/VolumeServiceImpl.java | 3 ++- .../LibvirtCheckAndRepairVolumeCommandWrapper.java | 4 ++-- .../java/org/apache/cloudstack/utils/qemu/QemuImg.java | 18 +++++++++--------- .../java/com/cloud/storage/VolumeApiServiceImpl.java | 18 +++++++----------- 4 files changed, 20 insertions(+), 23 deletions(-) diff --git a/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java b/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java index 580e7207404..ed2f72ffd3e 100644 --- a/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java +++ b/engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java @@ -128,6 +128,7 @@ import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; import com.cloud.storage.VMTemplateVO; import com.cloud.storage.Volume; import com.cloud.storage.Volume.State; +import com.cloud.storage.VolumeApiServiceImpl; import com.cloud.storage.VolumeDetailVO; import com.cloud.storage.VolumeVO; import com.cloud.storage.dao.VMTemplateDao; @@ -2768,7 +2769,7 @@ public class VolumeServiceImpl implements VolumeService { @Override public void checkAndRepairVolumeBasedOnConfig(DataObject dataObject, Host host) { if (HypervisorType.KVM.equals(host.getHypervisorType()) && DataObjectType.VOLUME.equals(dataObject.getType())) { - if (com.cloud.storage.VolumeApiServiceImpl.AllowCheckAndRepairVolume.value()) { + if (VolumeApiServiceImpl.AllowCheckAndRepairVolume.value()) { s_logger.info(String.format("Trying to check and repair the volume %d", dataObject.getId())); String repair = CheckAndRepairVolumeCmd.RepairValues.LEAKS.name().toLowerCase(); CheckAndRepairVolumePayload payload = new CheckAndRepairVolumePayload(repair); diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckAndRepairVolumeCommandWrapper.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckAndRepairVolumeCommandWrapper.java index 38eb3187516..a9d9cd948e6 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckAndRepairVolumeCommandWrapper.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckAndRepairVolumeCommandWrapper.java @@ -66,7 +66,7 @@ public class LibvirtCheckAndRepairVolumeCommandWrapper extends CommandWrapper<Ch QemuObject.EncryptFormat encryptFormat = QemuObject.EncryptFormat.enumValue(command.getEncryptFormat()); byte[] passphrase = command.getPassphrase(); try { - String checkVolumeResult = checkAndRepairVolume(vol, repair, encryptFormat, passphrase, serverResource); + String checkVolumeResult = checkAndRepairVolume(vol, null, encryptFormat, passphrase, serverResource); s_logger.info(String.format("Check Volume result for the volume %s is %s", vol.getName(), checkVolumeResult)); CheckAndRepairVolumeAnswer answer = new CheckAndRepairVolumeAnswer(command, true, checkVolumeResult); answer.setVolumeCheckExecutionResult(checkVolumeResult); @@ -77,7 +77,7 @@ public class LibvirtCheckAndRepairVolumeCommandWrapper extends CommandWrapper<Ch JsonNode jsonNode = objectMapper.readTree(checkVolumeResult); JsonNode leaksNode = jsonNode.get("leaks"); if (leaksNode != null) { - leaks = jsonNode.asInt(); + leaks = leaksNode.asInt(); } if (leaks == 0) { diff --git a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/qemu/QemuImg.java b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/qemu/QemuImg.java index b8d94ccaef7..0eae283821d 100644 --- a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/qemu/QemuImg.java +++ b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/utils/qemu/QemuImg.java @@ -824,29 +824,29 @@ public class QemuImg { * Boolean option whether to repair any leaks */ public String checkAndRepair(final QemuImgFile file, final QemuImageOptions imageOptions, final List<QemuObject> qemuObjects, final String repair) throws QemuImgException { - final Script s = new Script(_qemuImgPath); - s.add("check"); + final Script script = new Script(_qemuImgPath); + script.add("check"); if (imageOptions == null) { - s.add(file.getFileName()); + script.add(file.getFileName()); } for (QemuObject o : qemuObjects) { - s.add(o.toCommandFlag()); + script.add(o.toCommandFlag()); } if (imageOptions != null) { - s.add(imageOptions.toCommandFlag()); + script.add(imageOptions.toCommandFlag()); } - s.add("--output=json"); + script.add("--output=json"); if (StringUtils.isNotEmpty(repair)) { - s.add("-r"); - s.add(repair); + script.add("-r"); + script.add(repair); } OutputInterpreter.AllLinesParser parser = new OutputInterpreter.AllLinesParser(); - final String result = s.execute(parser); + final String result = script.execute(parser); if (result != null) { throw new QemuImgException(result); } diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java index dcf9fb3f80d..36b0aee98c5 100644 --- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java @@ -1340,7 +1340,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic outcome.get(); } catch (InterruptedException e) { throw new RuntimeException("Operation was interrupted", e); - } catch (java.util.concurrent.ExecutionException e) { + } catch (ExecutionException e) { throw new RuntimeException("Execution exception", e); } @@ -1853,7 +1853,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic outcome.get(); } catch (InterruptedException e) { throw new RuntimeException("Operation is interrupted", e); - } catch (java.util.concurrent.ExecutionException e) { + } catch (ExecutionException e) { throw new RuntimeException("Execution exception--", e); } @@ -1922,10 +1922,6 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic throw new InvalidParameterValueException("Checking volume and repairing failed due to volume:" + volumeId + " doesn't exist"); } - if (volume.getState() != Volume.State.Ready) { - throw new InvalidParameterValueException("VolumeId: " + volumeId + " is not in " + Volume.State.Ready + " state but " + volume.getState() + ". Cannot check and repair the volume."); - } - CheckAndRepairVolumePayload payload = new CheckAndRepairVolumePayload(repair); volume.addPayload(payload); @@ -2132,7 +2128,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic outcome.get(); } catch (InterruptedException e) { throw new RuntimeException("Operation was interrupted", e); - } catch (java.util.concurrent.ExecutionException e) { + } catch (ExecutionException e) { throw new RuntimeException("Execution exception", e); } @@ -2918,7 +2914,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic outcome.get(); } catch (InterruptedException e) { throw new RuntimeException("Operation is interrupted", e); - } catch (java.util.concurrent.ExecutionException e) { + } catch (ExecutionException e) { throw new RuntimeException("Execution excetion", e); } @@ -3326,7 +3322,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic outcome.get(); } catch (InterruptedException e) { throw new RuntimeException("Operation is interrupted", e); - } catch (java.util.concurrent.ExecutionException e) { + } catch (ExecutionException e) { throw new RuntimeException("Execution excetion", e); } @@ -3655,7 +3651,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic outcome.get(); } catch (InterruptedException e) { throw new RuntimeException("Operation is interrupted", e); - } catch (java.util.concurrent.ExecutionException e) { + } catch (ExecutionException e) { throw new RuntimeException("Execution excetion", e); } @@ -3972,7 +3968,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic outcome.get(); } catch (InterruptedException e) { throw new RuntimeException("Operation is interrupted", e); - } catch (java.util.concurrent.ExecutionException e) { + } catch (ExecutionException e) { throw new RuntimeException("Execution excetion", e); }
