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 3f8a54bdee4020241e1d4937d3d61dc29c91467d Author: Harikrishna Patnala <[email protected]> AuthorDate: Tue Jan 30 13:17:35 2024 +0530 Refactored the names to look similar across the code --- .../java/com/cloud/storage/VolumeApiService.java | 4 ++-- ...RepairCmd.java => CheckAndRepairVolumeCmd.java} | 8 +++---- ...Answer.java => CheckAndRepairVolumeAnswer.java} | 8 +++---- ...mmand.java => CheckAndRepairVolumeCommand.java} | 4 ++-- .../com/cloud/vm/VmWorkCheckAndRepairVolume.java | 2 +- .../storage/volume/VolumeServiceImpl.java | 17 +++++++------- .../storage/volume/VolumeServiceTest.java | 12 +++++----- ...LibvirtCheckAndRepairVolumeCommandWrapper.java} | 26 +++++++++++----------- ...irtCheckAndRepairVolumeCommandWrapperTest.java} | 16 ++++++------- .../com/cloud/server/ManagementServerImpl.java | 4 ++-- .../com/cloud/storage/VolumeApiServiceImpl.java | 20 ++++++++--------- .../cloud/storage/VolumeApiServiceImplTest.java | 4 ++-- 12 files changed, 63 insertions(+), 62 deletions(-) diff --git a/api/src/main/java/com/cloud/storage/VolumeApiService.java b/api/src/main/java/com/cloud/storage/VolumeApiService.java index 652d4ab3cc8..a673df12d0f 100644 --- a/api/src/main/java/com/cloud/storage/VolumeApiService.java +++ b/api/src/main/java/com/cloud/storage/VolumeApiService.java @@ -26,7 +26,7 @@ import com.cloud.utils.Pair; import org.apache.cloudstack.api.command.user.volume.AssignVolumeCmd; import org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd; import org.apache.cloudstack.api.command.user.volume.ChangeOfferingForVolumeCmd; -import org.apache.cloudstack.api.command.user.volume.CheckVolumeAndRepairCmd; +import org.apache.cloudstack.api.command.user.volume.CheckAndRepairVolumeCmd; import org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd; import org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd; import org.apache.cloudstack.api.command.user.volume.ExtractVolumeCmd; @@ -181,5 +181,5 @@ public interface VolumeApiService { boolean stateTransitTo(Volume vol, Volume.Event event) throws NoTransitionException; - Pair<String, String> checkAndRepairVolume(CheckVolumeAndRepairCmd cmd) throws ResourceAllocationException; + Pair<String, String> checkAndRepairVolume(CheckAndRepairVolumeCmd cmd) throws ResourceAllocationException; } diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/volume/CheckVolumeAndRepairCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/volume/CheckAndRepairVolumeCmd.java similarity index 92% rename from api/src/main/java/org/apache/cloudstack/api/command/user/volume/CheckVolumeAndRepairCmd.java rename to api/src/main/java/org/apache/cloudstack/api/command/user/volume/CheckAndRepairVolumeCmd.java index 5ac5445fe5f..01835de8ce1 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/volume/CheckVolumeAndRepairCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/volume/CheckAndRepairVolumeCmd.java @@ -36,15 +36,15 @@ import com.cloud.user.Account; import com.cloud.utils.Pair; import com.cloud.utils.StringUtils; -@APICommand(name = "checkVolumeAndRepair", description = "Check the volume and repair if needed, this is currently supported for KVM only", responseObject = VolumeResponse.class, entityType = {Volume.class}, +@APICommand(name = "checkVolume", description = "Check the volume for any errors or leaks and also repairs when repair parameter is passed, this is currently supported for KVM only", responseObject = VolumeResponse.class, entityType = {Volume.class}, since = "4.18.1", authorized = {RoleType.Admin, RoleType.ResourceAdmin, RoleType.DomainAdmin, RoleType.User}, requestHasSensitiveInfo = false, responseHasSensitiveInfo = true) -public class CheckVolumeAndRepairCmd extends BaseCmd { - public static final Logger s_logger = Logger.getLogger(CheckVolumeAndRepairCmd.class.getName()); +public class CheckAndRepairVolumeCmd extends BaseCmd { + public static final Logger s_logger = Logger.getLogger(CheckAndRepairVolumeCmd.class.getName()); - private static final String s_name = "checkvolumeandrepairresponse"; + private static final String s_name = "checkandrepairvolumeresponse"; ///////////////////////////////////////////////////// //////////////// API parameters ///////////////////// diff --git a/core/src/main/java/com/cloud/agent/api/storage/CheckVolumeAndRepairAnswer.java b/core/src/main/java/com/cloud/agent/api/storage/CheckAndRepairVolumeAnswer.java similarity index 89% rename from core/src/main/java/com/cloud/agent/api/storage/CheckVolumeAndRepairAnswer.java rename to core/src/main/java/com/cloud/agent/api/storage/CheckAndRepairVolumeAnswer.java index 25fc9082787..3dc7752bfef 100644 --- a/core/src/main/java/com/cloud/agent/api/storage/CheckVolumeAndRepairAnswer.java +++ b/core/src/main/java/com/cloud/agent/api/storage/CheckAndRepairVolumeAnswer.java @@ -21,21 +21,21 @@ package com.cloud.agent.api.storage; import com.cloud.agent.api.Answer; -public class CheckVolumeAndRepairAnswer extends Answer { +public class CheckAndRepairVolumeAnswer extends Answer { private String volumeCheckExecutionResult; private String volumeRepairExecutionResult; - protected CheckVolumeAndRepairAnswer() { + protected CheckAndRepairVolumeAnswer() { super(); } - public CheckVolumeAndRepairAnswer(CheckVolumeAndRepairCommand cmd, boolean result, String details, String volumeCheckExecutionResult, String volumeRepairedExecutionResult) { + public CheckAndRepairVolumeAnswer(CheckAndRepairVolumeCommand cmd, boolean result, String details, String volumeCheckExecutionResult, String volumeRepairedExecutionResult) { super(cmd, result, details); this.volumeCheckExecutionResult = volumeCheckExecutionResult; this.volumeRepairExecutionResult = volumeRepairedExecutionResult; } - public CheckVolumeAndRepairAnswer(CheckVolumeAndRepairCommand cmd, boolean result, String details) { + public CheckAndRepairVolumeAnswer(CheckAndRepairVolumeCommand cmd, boolean result, String details) { super(cmd, result, details); } diff --git a/core/src/main/java/com/cloud/agent/api/storage/CheckVolumeAndRepairCommand.java b/core/src/main/java/com/cloud/agent/api/storage/CheckAndRepairVolumeCommand.java similarity index 94% rename from core/src/main/java/com/cloud/agent/api/storage/CheckVolumeAndRepairCommand.java rename to core/src/main/java/com/cloud/agent/api/storage/CheckAndRepairVolumeCommand.java index e6d12aab513..2553fdf477c 100644 --- a/core/src/main/java/com/cloud/agent/api/storage/CheckVolumeAndRepairCommand.java +++ b/core/src/main/java/com/cloud/agent/api/storage/CheckAndRepairVolumeCommand.java @@ -25,7 +25,7 @@ import com.cloud.agent.api.to.StorageFilerTO; import java.util.Arrays; -public class CheckVolumeAndRepairCommand extends Command { +public class CheckAndRepairVolumeCommand extends Command { private String path; private StorageFilerTO pool; private String repair; @@ -33,7 +33,7 @@ public class CheckVolumeAndRepairCommand extends Command { private byte[] passphrase; private String encryptFormat; - public CheckVolumeAndRepairCommand(String path, StorageFilerTO pool, String repair, byte[] passphrase, String encryptFormat) { + public CheckAndRepairVolumeCommand(String path, StorageFilerTO pool, String repair, byte[] passphrase, String encryptFormat) { this.path = path; this.pool = pool; this.repair = repair; diff --git a/engine/components-api/src/main/java/com/cloud/vm/VmWorkCheckAndRepairVolume.java b/engine/components-api/src/main/java/com/cloud/vm/VmWorkCheckAndRepairVolume.java index b6b73df959f..eaee4d19eb3 100644 --- a/engine/components-api/src/main/java/com/cloud/vm/VmWorkCheckAndRepairVolume.java +++ b/engine/components-api/src/main/java/com/cloud/vm/VmWorkCheckAndRepairVolume.java @@ -19,7 +19,7 @@ package com.cloud.vm; public class VmWorkCheckAndRepairVolume extends VmWork { - private static final long serialVersionUID = 341816293003023823L; + private static final long serialVersionUID = 341816293003023824L; private Long volumeId; 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 c0628007326..76b6b7de9c0 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 @@ -34,7 +34,7 @@ import javax.inject.Inject; import org.apache.cloudstack.annotation.AnnotationService; import org.apache.cloudstack.annotation.dao.AnnotationDao; -import org.apache.cloudstack.api.command.user.volume.CheckVolumeAndRepairCmd; +import org.apache.cloudstack.api.command.user.volume.CheckAndRepairVolumeCmd; import org.apache.cloudstack.engine.cloud.entity.api.VolumeEntity; import org.apache.cloudstack.engine.orchestration.service.VolumeOrchestrationService; import org.apache.cloudstack.engine.subsystem.api.storage.ChapInfo; @@ -88,8 +88,8 @@ import org.springframework.stereotype.Component; import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; import com.cloud.agent.api.ModifyTargetsCommand; -import com.cloud.agent.api.storage.CheckVolumeAndRepairAnswer; -import com.cloud.agent.api.storage.CheckVolumeAndRepairCommand; +import com.cloud.agent.api.storage.CheckAndRepairVolumeAnswer; +import com.cloud.agent.api.storage.CheckAndRepairVolumeCommand; import com.cloud.agent.api.storage.ListVolumeAnswer; import com.cloud.agent.api.storage.ListVolumeCommand; import com.cloud.agent.api.storage.ResizeVolumeCommand; @@ -2768,9 +2768,9 @@ 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.AllowVolumeCheckAndRepair.value()) { + if (com.cloud.storage.VolumeApiServiceImpl.AllowCheckAndRepairVolume.value()) { s_logger.info(String.format("Trying to check and repair the volume %d", dataObject.getId())); - String repair = CheckVolumeAndRepairCmd.RepairValues.leaks.name(); + String repair = CheckAndRepairVolumeCmd.RepairValues.leaks.name(); CheckAndRepairVolumePayload payload = new CheckAndRepairVolumePayload(repair); VolumeInfo volumeInfo = volFactory.getVolume(dataObject.getId()); volumeInfo.addPayload(payload); @@ -2784,11 +2784,11 @@ public class VolumeServiceImpl implements VolumeService { Long poolId = volume.getPoolId(); StoragePool pool = _storageMgr.getStoragePool(poolId); CheckAndRepairVolumePayload payload = (CheckAndRepairVolumePayload) volume.getpayload(); - CheckVolumeAndRepairCommand command = new CheckVolumeAndRepairCommand(volume.getPath(), new StorageFilerTO(pool), payload.getRepair(), + CheckAndRepairVolumeCommand command = new CheckAndRepairVolumeCommand(volume.getPath(), new StorageFilerTO(pool), payload.getRepair(), volume.getPassphrase(), volume.getEncryptFormat()); try { - CheckVolumeAndRepairAnswer answer = (CheckVolumeAndRepairAnswer) _storageMgr.sendToPool(pool, null, command); + CheckAndRepairVolumeAnswer answer = (CheckAndRepairVolumeAnswer) _storageMgr.sendToPool(pool, null, command); if (answer != null && answer.getResult()) { s_logger.debug("Check volume response result: " + answer.getDetails()); payload.setVolumeCheckExecutionResult(answer.getVolumeCheckExecutionResult()); @@ -2797,7 +2797,8 @@ public class VolumeServiceImpl implements VolumeService { } return new Pair<>(answer.getVolumeCheckExecutionResult(), answer.getVolumeRepairExecutionResult()); } else { - s_logger.debug("Failed to check and repair the volume with error " + answer.getDetails()); + String errMsg = (answer == null) ? null : answer.getDetails(); + s_logger.debug("Failed to check and repair the volume with error " + errMsg); } } catch (Exception e) { diff --git a/engine/storage/volume/src/test/java/org/apache/cloudstack/storage/volume/VolumeServiceTest.java b/engine/storage/volume/src/test/java/org/apache/cloudstack/storage/volume/VolumeServiceTest.java index 23996fda470..a789a2fb660 100644 --- a/engine/storage/volume/src/test/java/org/apache/cloudstack/storage/volume/VolumeServiceTest.java +++ b/engine/storage/volume/src/test/java/org/apache/cloudstack/storage/volume/VolumeServiceTest.java @@ -19,8 +19,8 @@ package org.apache.cloudstack.storage.volume; -import com.cloud.agent.api.storage.CheckVolumeAndRepairAnswer; -import com.cloud.agent.api.storage.CheckVolumeAndRepairCommand; +import com.cloud.agent.api.storage.CheckAndRepairVolumeAnswer; +import com.cloud.agent.api.storage.CheckAndRepairVolumeCommand; import com.cloud.agent.api.to.StorageFilerTO; import com.cloud.exception.StorageUnavailableException; import com.cloud.storage.CheckAndRepairVolumePayload; @@ -251,10 +251,10 @@ public class VolumeServiceTest extends TestCase{ " \"fragmented-clusters\": 96135\n" + "}"; - CheckVolumeAndRepairCommand command = new CheckVolumeAndRepairCommand(volume.getPath(), new StorageFilerTO(pool), payload.getRepair(), + CheckAndRepairVolumeCommand command = new CheckAndRepairVolumeCommand(volume.getPath(), new StorageFilerTO(pool), payload.getRepair(), volume.getPassphrase(), volume.getEncryptFormat()); - CheckVolumeAndRepairAnswer answer = new CheckVolumeAndRepairAnswer(command, true, checkResult); + CheckAndRepairVolumeAnswer answer = new CheckAndRepairVolumeAnswer(command, true, checkResult); answer.setVolumeCheckExecutionResult(checkResult); Mockito.when(storageManagerMock.sendToPool(pool, null, command)).thenReturn(answer); @@ -276,10 +276,10 @@ public class VolumeServiceTest extends TestCase{ Mockito.when(volume.getPassphrase()).thenReturn(new byte[] {3, 1, 2, 3}); Mockito.when(volume.getEncryptFormat()).thenReturn("LUKS"); - CheckVolumeAndRepairCommand command = new CheckVolumeAndRepairCommand(volume.getPath(), new StorageFilerTO(pool), payload.getRepair(), + CheckAndRepairVolumeCommand command = new CheckAndRepairVolumeCommand(volume.getPath(), new StorageFilerTO(pool), payload.getRepair(), volume.getPassphrase(), volume.getEncryptFormat()); - CheckVolumeAndRepairAnswer answer = new CheckVolumeAndRepairAnswer(command, false, "Unable to execute qemu command"); + CheckAndRepairVolumeAnswer answer = new CheckAndRepairVolumeAnswer(command, false, "Unable to execute qemu command"); Mockito.when(storageManagerMock.sendToPool(pool, null, command)).thenReturn(answer); Pair<String, String> result = volumeServiceImplSpy.checkAndRepairVolume(volume); diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckVolumeAndRepairCommandWrapper.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckAndRepairVolumeCommandWrapper.java similarity index 86% rename from plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckVolumeAndRepairCommandWrapper.java rename to plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckAndRepairVolumeCommandWrapper.java index 280e2aa14d2..38eb3187516 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckVolumeAndRepairCommandWrapper.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckAndRepairVolumeCommandWrapper.java @@ -20,8 +20,8 @@ package com.cloud.hypervisor.kvm.resource.wrapper; import com.cloud.agent.api.Answer; -import com.cloud.agent.api.storage.CheckVolumeAndRepairCommand; -import com.cloud.agent.api.storage.CheckVolumeAndRepairAnswer; +import com.cloud.agent.api.storage.CheckAndRepairVolumeCommand; +import com.cloud.agent.api.storage.CheckAndRepairVolumeAnswer; import com.cloud.agent.api.to.StorageFilerTO; import com.cloud.hypervisor.kvm.resource.LibvirtComputingResource; import com.cloud.hypervisor.kvm.storage.KVMPhysicalDisk; @@ -48,13 +48,13 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -@ResourceWrapper(handles = CheckVolumeAndRepairCommand.class) -public class LibvirtCheckVolumeAndRepairCommandWrapper extends CommandWrapper<CheckVolumeAndRepairCommand, Answer, LibvirtComputingResource> { +@ResourceWrapper(handles = CheckAndRepairVolumeCommand.class) +public class LibvirtCheckAndRepairVolumeCommandWrapper extends CommandWrapper<CheckAndRepairVolumeCommand, Answer, LibvirtComputingResource> { - private static final Logger s_logger = Logger.getLogger(LibvirtCheckVolumeAndRepairCommandWrapper.class); + private static final Logger s_logger = Logger.getLogger(LibvirtCheckAndRepairVolumeCommandWrapper.class); @Override - public Answer execute(CheckVolumeAndRepairCommand command, LibvirtComputingResource serverResource) { + public Answer execute(CheckAndRepairVolumeCommand command, LibvirtComputingResource serverResource) { final String volumeId = command.getPath(); final String repair = command.getRepair(); final StorageFilerTO spool = command.getPool(); @@ -66,9 +66,9 @@ public class LibvirtCheckVolumeAndRepairCommandWrapper extends CommandWrapper<Ch QemuObject.EncryptFormat encryptFormat = QemuObject.EncryptFormat.enumValue(command.getEncryptFormat()); byte[] passphrase = command.getPassphrase(); try { - String checkVolumeResult = checkVolumeAndRepair(vol, repair, encryptFormat, passphrase, serverResource); + String checkVolumeResult = checkAndRepairVolume(vol, repair, encryptFormat, passphrase, serverResource); s_logger.info(String.format("Check Volume result for the volume %s is %s", vol.getName(), checkVolumeResult)); - CheckVolumeAndRepairAnswer answer = new CheckVolumeAndRepairAnswer(command, true, checkVolumeResult); + CheckAndRepairVolumeAnswer answer = new CheckAndRepairVolumeAnswer(command, true, checkVolumeResult); answer.setVolumeCheckExecutionResult(checkVolumeResult); int leaks = 0; @@ -85,7 +85,7 @@ public class LibvirtCheckVolumeAndRepairCommandWrapper extends CommandWrapper<Ch s_logger.info(msg); String jsonStringFormat = String.format("{ \"message\": \"%s\" }", msg); String finalResult = (checkVolumeResult != null ? checkVolumeResult.concat(",") : "") + jsonStringFormat; - answer = new CheckVolumeAndRepairAnswer(command, true, finalResult); + answer = new CheckAndRepairVolumeAnswer(command, true, finalResult); answer.setVolumeRepairExecutionResult(jsonStringFormat); answer.setVolumeCheckExecutionResult(checkVolumeResult); @@ -94,17 +94,17 @@ public class LibvirtCheckVolumeAndRepairCommandWrapper extends CommandWrapper<Ch } if (StringUtils.isNotEmpty(repair)) { - String repairVolumeResult = checkVolumeAndRepair(vol, repair, encryptFormat, passphrase, serverResource); + String repairVolumeResult = checkAndRepairVolume(vol, repair, encryptFormat, passphrase, serverResource); String finalResult = (checkVolumeResult != null ? checkVolumeResult.concat(",") : "") + repairVolumeResult; s_logger.info(String.format("Repair Volume result for the volume %s is %s", vol.getName(), repairVolumeResult)); - answer = new CheckVolumeAndRepairAnswer(command, true, finalResult); + answer = new CheckAndRepairVolumeAnswer(command, true, finalResult); answer.setVolumeRepairExecutionResult(repairVolumeResult); answer.setVolumeCheckExecutionResult(checkVolumeResult); } return answer; } catch (Exception e) { - return new CheckVolumeAndRepairAnswer(command, false, e.toString()); + return new CheckAndRepairVolumeAnswer(command, false, e.toString()); } finally { if (passphrase != null) { Arrays.fill(passphrase, (byte) 0); @@ -112,7 +112,7 @@ public class LibvirtCheckVolumeAndRepairCommandWrapper extends CommandWrapper<Ch } } - protected String checkVolumeAndRepair(final KVMPhysicalDisk vol, final String repair, final QemuObject.EncryptFormat encryptFormat, byte[] passphrase, final LibvirtComputingResource libvirtComputingResource) throws CloudRuntimeException { + protected String checkAndRepairVolume(final KVMPhysicalDisk vol, final String repair, final QemuObject.EncryptFormat encryptFormat, byte[] passphrase, final LibvirtComputingResource libvirtComputingResource) throws CloudRuntimeException { List<QemuObject> passphraseObjects = new ArrayList<>(); QemuImageOptions imgOptions = null; if (ArrayUtils.isEmpty(passphrase)) { diff --git a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckVolumeAndRepairCommandWrapperTest.java b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckAndRepairVolumeCommandWrapperTest.java similarity index 84% rename from plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckVolumeAndRepairCommandWrapperTest.java rename to plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckAndRepairVolumeCommandWrapperTest.java index dd7b6e0e2f7..3fa113dadbd 100644 --- a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckVolumeAndRepairCommandWrapperTest.java +++ b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckAndRepairVolumeCommandWrapperTest.java @@ -14,8 +14,8 @@ package com.cloud.hypervisor.kvm.resource.wrapper; -import com.cloud.agent.api.storage.CheckVolumeAndRepairAnswer; -import com.cloud.agent.api.storage.CheckVolumeAndRepairCommand; +import com.cloud.agent.api.storage.CheckAndRepairVolumeAnswer; +import com.cloud.agent.api.storage.CheckAndRepairVolumeCommand; import com.cloud.agent.api.to.StorageFilerTO; import com.cloud.hypervisor.kvm.resource.LibvirtComputingResource; import com.cloud.hypervisor.kvm.storage.KVMPhysicalDisk; @@ -37,16 +37,16 @@ import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) -public class LibvirtCheckVolumeAndRepairCommandWrapperTest { +public class LibvirtCheckAndRepairVolumeCommandWrapperTest { @Spy - LibvirtCheckVolumeAndRepairCommandWrapper libvirtCheckVolumeAndRepairCommandWrapperSpy = Mockito.spy(LibvirtCheckVolumeAndRepairCommandWrapper.class); + LibvirtCheckAndRepairVolumeCommandWrapper libvirtCheckAndRepairVolumeCommandWrapperSpy = Mockito.spy(LibvirtCheckAndRepairVolumeCommandWrapper.class); @Mock LibvirtComputingResource libvirtComputingResourceMock; @Mock - CheckVolumeAndRepairCommand checkVolumeAndRepairCommand; + CheckAndRepairVolumeCommand checkAndRepairVolumeCommand; @Mock QemuImg qemuImgMock; @@ -57,10 +57,10 @@ public class LibvirtCheckVolumeAndRepairCommandWrapperTest { } @Test - @PrepareForTest(LibvirtCheckVolumeAndRepairCommandWrapper.class) + @PrepareForTest(LibvirtCheckAndRepairVolumeCommandWrapper.class) public void testCheckAndRepairVolume() throws Exception { - CheckVolumeAndRepairCommand cmd = Mockito.mock(CheckVolumeAndRepairCommand.class); + CheckAndRepairVolumeCommand cmd = Mockito.mock(CheckAndRepairVolumeCommand.class); Mockito.when(cmd.getPath()).thenReturn("cbac516a-0f1f-4559-921c-1a7c6c408ccf"); Mockito.when(cmd.getRepair()).thenReturn(null); StorageFilerTO spool = Mockito.mock(StorageFilerTO.class); @@ -94,7 +94,7 @@ public class LibvirtCheckVolumeAndRepairCommandWrapperTest { PowerMockito.whenNew(QemuImg.class).withArguments(Mockito.anyInt()).thenReturn(qemuImgMock); Mockito.when(qemuImgMock.checkAndRepair(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(checkResult); - CheckVolumeAndRepairAnswer result = (CheckVolumeAndRepairAnswer) libvirtCheckVolumeAndRepairCommandWrapperSpy.execute(cmd, libvirtComputingResourceMock); + CheckAndRepairVolumeAnswer result = (CheckAndRepairVolumeAnswer) libvirtCheckAndRepairVolumeCommandWrapperSpy.execute(cmd, libvirtComputingResourceMock); Assert.assertEquals(checkResult, result.getVolumeCheckExecutionResult()); } diff --git a/server/src/main/java/com/cloud/server/ManagementServerImpl.java b/server/src/main/java/com/cloud/server/ManagementServerImpl.java index 56df8d501ee..70fe067858c 100644 --- a/server/src/main/java/com/cloud/server/ManagementServerImpl.java +++ b/server/src/main/java/com/cloud/server/ManagementServerImpl.java @@ -553,7 +553,7 @@ import org.apache.cloudstack.api.command.user.volume.AddResourceDetailCmd; import org.apache.cloudstack.api.command.user.volume.AssignVolumeCmd; import org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd; import org.apache.cloudstack.api.command.user.volume.ChangeOfferingForVolumeCmd; -import org.apache.cloudstack.api.command.user.volume.CheckVolumeAndRepairCmd; +import org.apache.cloudstack.api.command.user.volume.CheckAndRepairVolumeCmd; import org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd; import org.apache.cloudstack.api.command.user.volume.DeleteVolumeCmd; import org.apache.cloudstack.api.command.user.volume.DestroyVolumeCmd; @@ -3707,7 +3707,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe cmdList.add(ListVMGroupsCmd.class); cmdList.add(UpdateVMGroupCmd.class); cmdList.add(AttachVolumeCmd.class); - cmdList.add(CheckVolumeAndRepairCmd.class); + cmdList.add(CheckAndRepairVolumeCmd.class); cmdList.add(CreateVolumeCmd.class); cmdList.add(DeleteVolumeCmd.class); cmdList.add(UpdateVolumeCmd.class); diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java index e58dd110afd..dcf9fb3f80d 100644 --- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java @@ -42,7 +42,7 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.command.user.volume.AssignVolumeCmd; import org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd; import org.apache.cloudstack.api.command.user.volume.ChangeOfferingForVolumeCmd; -import org.apache.cloudstack.api.command.user.volume.CheckVolumeAndRepairCmd; +import org.apache.cloudstack.api.command.user.volume.CheckAndRepairVolumeCmd; import org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd; import org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd; import org.apache.cloudstack.api.command.user.volume.ExtractVolumeCmd; @@ -381,7 +381,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic public static ConfigKey<Long> storageTagRuleExecutionTimeout = new ConfigKey<>("Advanced", Long.class, "storage.tag.rule.execution.timeout", "2000", "The maximum runtime," + " in milliseconds, to execute a storage tag rule; if it is reached, a timeout will happen.", true); - public static final ConfigKey<Boolean> AllowVolumeCheckAndRepair = new ConfigKey<Boolean>("Advanced", Boolean.class, "volume.check.and.repair.before.use", "false", + public static final ConfigKey<Boolean> AllowCheckAndRepairVolume = new ConfigKey<Boolean>("Advanced", Boolean.class, "volume.check.and.repair.leaks.before.use", "false", "To check and repair the volume if it has any leaks before performing volume attach or VM start operations", true); private final StateMachine2<Volume.State, Volume.Event, Volume> _volStateMachine; @@ -1824,7 +1824,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic @Override @ActionEvent(eventType = EventTypes.EVENT_VOLUME_CHECK, eventDescription = "checking volume and repair if needed", async = true) - public Pair<String, String> checkAndRepairVolume(CheckVolumeAndRepairCmd cmd) throws ResourceAllocationException { + public Pair<String, String> checkAndRepairVolume(CheckAndRepairVolumeCmd cmd) throws ResourceAllocationException { long volumeId = cmd.getId(); String repair = cmd.getRepair(); @@ -1841,13 +1841,13 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic VmWorkJobVO placeHolder = null; placeHolder = createPlaceHolderWork(vmId); try { - Pair<String, String> result = orchestrateCheckVolumeAndRepair(volumeId, repair); + Pair<String, String> result = orchestrateCheckAndRepairVolume(volumeId, repair); return result; } finally { _workJobDao.expunge(placeHolder.getId()); } } else { - Outcome<Pair> outcome = checkVolumeAndRepairThroughJobQueue(vmId, volumeId, repair); + Outcome<Pair> outcome = checkAndRepairVolumeThroughJobQueue(vmId, volumeId, repair); try { outcome.get(); @@ -1914,7 +1914,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic } } - private Pair<String, String> orchestrateCheckVolumeAndRepair(Long volumeId, String repair) { + private Pair<String, String> orchestrateCheckAndRepairVolume(Long volumeId, String repair) { VolumeInfo volume = volFactory.getVolume(volumeId); @@ -1932,7 +1932,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic return volService.checkAndRepairVolume(volume); } - public Outcome<Pair> checkVolumeAndRepairThroughJobQueue(final Long vmId, final Long volumeId, String repair) { + public Outcome<Pair> checkAndRepairVolumeThroughJobQueue(final Long vmId, final Long volumeId, String repair) { final CallContext context = CallContext.current(); final User callingUser = context.getCallingUser(); @@ -5003,9 +5003,9 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic } @ReflectionUse - private Pair<JobInfo.Status, String> orchestrateCheckVolumeAndRepair(VmWorkCheckAndRepairVolume work) throws Exception { + private Pair<JobInfo.Status, String> orchestrateCheckAndRepairVolume(VmWorkCheckAndRepairVolume work) throws Exception { Account account = _accountDao.findById(work.getAccountId()); - Pair<String, String> result = orchestrateCheckVolumeAndRepair(work.getVolumeId(), work.getRepair()); + Pair<String, String> result = orchestrateCheckAndRepairVolume(work.getVolumeId(), work.getRepair()); return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED, _jobMgr.marshallResultObject(result)); } @@ -5046,7 +5046,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic MatchStoragePoolTagsWithDiskOffering, UseHttpsToUpload, WaitDetachDevice, - AllowVolumeCheckAndRepair + AllowCheckAndRepairVolume }; } } diff --git a/server/src/test/java/com/cloud/storage/VolumeApiServiceImplTest.java b/server/src/test/java/com/cloud/storage/VolumeApiServiceImplTest.java index bab5bdd20a9..4957eddecb8 100644 --- a/server/src/test/java/com/cloud/storage/VolumeApiServiceImplTest.java +++ b/server/src/test/java/com/cloud/storage/VolumeApiServiceImplTest.java @@ -40,7 +40,7 @@ import java.util.concurrent.ExecutionException; import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.SecurityChecker.AccessType; -import org.apache.cloudstack.api.command.user.volume.CheckVolumeAndRepairCmd; +import org.apache.cloudstack.api.command.user.volume.CheckAndRepairVolumeCmd; import org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd; import org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd; import org.apache.cloudstack.api.command.user.volume.MigrateVolumeCmd; @@ -1766,7 +1766,7 @@ public class VolumeApiServiceImplTest { @Test public void testCheckAndRepairVolume() throws ResourceAllocationException { - CheckVolumeAndRepairCmd cmd = mock(CheckVolumeAndRepairCmd.class); + CheckAndRepairVolumeCmd cmd = mock(CheckAndRepairVolumeCmd.class); when(cmd.getId()).thenReturn(1L); when(cmd.getRepair()).thenReturn(null);
