Sergey Gotliv has posted comments on this change. Change subject: backend,webadmin: Enable virtual drive size extension ......................................................................
Patch Set 13: (11 inline comments) .................................................... File backend/manager/dbscripts/upgrade/03_03_0190_add_extend_image_size_action_version_map.sql Line 1: insert into action_version_map (action_type, cluster_minimal_version, storage_pool_minimal_version) values(1013, '*', '3.3'); Done .................................................... File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExtendImageSizeCommand.java Line 41: } Line 42: Line 43: @Override Line 44: protected boolean canDoAction() { Line 45: return isDiskExists() && isNewSizeValid() && isVMStatusValid(); Done Line 46: } Line 47: Line 48: protected boolean isDiskExists() { Line 49: if (getImage() == null) { Line 105: Line 106: setSucceeded(true); Line 107: } Line 108: Line 109: private void updateRelevantVms() { Currently floating disks are not supported, I'll add it during the bug fixing - UI, REST and Backend Line 110: List<VM> vms = getVmsDiskPluggedTo(); Line 111: Line 112: for (VM vm : vms) { Line 113: // All running VMs must be updated that their virtual disk is grown, otherwise the change will be Line 111: Line 112: for (VM vm : vms) { Line 113: // All running VMs must be updated that their virtual disk is grown, otherwise the change will be Line 114: // visible after next restart. If disk is plugged to the single VM, this step must be executed anyway - Line 115: // for QCOW disk format it must sync between QCOW header and volume metadata. According to the protocol VDSM must promise the sync!!! Line 116: if (vm.getStatus().isUpOrPaused() || vms.size() == 1) { Line 117: try { Line 118: VDSReturnValue ret = extendVmDiskSize(vm, getParameters().getNewSize()); Line 119: if (!ret.getSucceeded()) { Line 223: private List<VM> getVmsDiskPluggedTo() { Line 224: if (vmsDiskPluggedTo == null) { Line 225: vmsDiskPluggedTo = getVmDAO().getForDisk(getImage().getId()).get(Boolean.TRUE); Line 226: Line 227: if (vmsDiskPluggedTo == null) { DAO returns a MAP which is not empty, but the we call to get(Boolean.TRUE) which is potentially can return null. But anyway, I want to be on the safe side. Line 228: vmsDiskPluggedTo = Collections.emptyList(); Line 229: } Line 230: } Line 231: return vmsDiskPluggedTo; .................................................... File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java Line 101: } else { Line 102: try { Line 103: performDiskUpdate(false); Line 104: } finally { Line 105: // by default this command will keep the lock even after this method is done, I removed this comment Line 106: // because the resize is async operation, but if this is the simple disk update Line 107: // locks should be freed right after the execution. Line 108: freeLock(); Line 109: } Line 122: if (isAtLeastOneVmIsNotDown(vmsDiskPluggedTo) && shouldUpdatePropertiesOtherThanSize()) { Line 123: return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_NOT_DOWN); Line 124: } Line 125: Line 126: if (!validateCanUpdateDiskInterfaceAndBootable(vmsDiskPluggedTo)) { Done Line 127: return false; Line 128: } Line 129: } Line 130: Line 464: } Line 465: return false; Line 466: } Line 467: Line 468: private boolean isDiskBecomesShareable(Disk oldDisk, Disk newDisk) { Done Line 469: return newDisk.isShareable() && !oldDisk.isShareable(); Line 470: } Line 471: Line 472: private boolean isDiskBecomesNonShareable(Disk oldDisk, Disk newDisk) { .................................................... File backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java Line 52: momErr(54), Line 53: replicaErr(55), Line 54: UpdateDeviceErr(56), Line 55: hwInfoErr(57), Line 56: ResizeErr(58), I will Line 57: recovery(99), Line 58: GeneralException(100), Line 59: StorageException(200), Line 60: VolumeDoesNotExist(201), .................................................... File frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/AbstractDiskModel.java Line 442: boolean isShareableDiskEnabled = (Boolean) AsyncDataProvider.getConfigValuePreConverted( Line 443: ConfigurationValues.ShareableDiskEnabled, datacenter.getcompatibility_version().getValue()); Line 444: Line 445: getIsShareable().setChangeProhibitionReason(CONSTANTS.shareableDiskNotSupported()); Line 446: getIsShareable().setIsChangable(isShareableDiskEnabled && getVm() != null && getVm().isDown()); Unfortunately, yes. User couldn't update disk properties for running VM, now he can extend the disk size, but I must prevent updates of other properties in that case. Line 447: } Line 448: Line 449: private void updateDirectLunDiskEnabled(StoragePool datacenter) { Line 450: boolean isInternal = (Boolean) getIsInternal().getEntity(); Line 465: getIsShareable().setIsChangable(false); Line 466: getIsShareable().setEntity(false); Line 467: } Line 468: else { Line 469: getIsShareable().setIsChangable(getVm() != null && getVm().isDown()); Same is before. Line 470: } Line 471: } Line 472: Line 473: private void updateVolumeFormat(VolumeType volumeType, StorageType storageType) { -- To view, visit http://gerrit.ovirt.org/14975 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie702348a68a26ac02a01f66aaa1ea42c2c675ebb Gerrit-PatchSet: 13 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Sergey Gotliv <sgot...@redhat.com> Gerrit-Reviewer: A Burden <abur...@redhat.com> Gerrit-Reviewer: Alissa Bonas <abo...@redhat.com> Gerrit-Reviewer: Allon Mureinik <amure...@redhat.com> Gerrit-Reviewer: Cheryn Tan <cheryn...@redhat.com> Gerrit-Reviewer: Daniel Erez <de...@redhat.com> Gerrit-Reviewer: Federico Simoncelli <fsimo...@redhat.com> Gerrit-Reviewer: Liron Ar <lara...@redhat.com> Gerrit-Reviewer: Maor Lipchuk <mlipc...@redhat.com> Gerrit-Reviewer: Sergey Gotliv <sgot...@redhat.com> Gerrit-Reviewer: Tal Nisan <tni...@redhat.com> Gerrit-Reviewer: liron aravot <liron.ara...@gmail.com> Gerrit-Reviewer: oVirt Jenkins CI Server _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches