Allon Mureinik has posted comments on this change.
Change subject: core, restapi: Introducing support for attaching disk snapshot
......................................................................
Patch Set 27:
(26 comments)
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmFromSnapshotCommand.java
Line 202: if (diskImagesFromConfiguration == null) {
Line 203: diskImagesFromConfiguration =
Line 204:
ImagesHandler.filterImageDisks(vmFromConfiguration.getDiskMap().values(),
Line 205: false,
Line 206: true, true);
please adhere to the given format - this new "true" should be on it's own line.
Line 207: }
Line 208: return diskImagesFromConfiguration;
Line 209: }
Line 210:
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java
Line 42: private Disk disk;
Line 43:
Line 44: public AttachDiskToVmCommand(T parameters) {
Line 45: super(parameters);
Line 46: disk = loadDisk((Guid)
getParameters().getEntityInfo().getId());
this cast looks redundant.
Line 47: }
Line 48:
Line 49: protected AttachDiskToVmCommand(T parameters, Disk disk) {
Line 50: super(parameters);
Line 56: if (isOperationPerformedOnDiskSnapshot()
Line 57: &&
(!validate(getSnapshotsValidator().snapshotExists(getSnapshot())) ||
!validate(getSnapshotsValidator().snapshotTypeSupported(getSnapshot(),
Line 58:
Collections.singletonList(SnapshotType.REGULAR))))) {
Line 59: return false;
Line 60: }
seems as though this should be done much later, after the basic validations
(like the disk's existence)
Line 61:
Line 62: if (disk == null) {
Line 63: return
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_IMAGE_DOES_NOT_EXIST);
Line 64: }
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
Line 99: protected List<DiskImage> getDisksList() {
Line 100: if (cachedSelectedActiveDisks == null) {
Line 101: cachedSelectedActiveDisks =
ImagesHandler.filterImageDisks(DbFacade.getInstance().getDiskDao().getAllForVm(getVmId()),
Line 102: true,
Line 103: true, true);
please adhere to the given format - this new "true" should be on it's own line.
Line 104: }
Line 105: return cachedSelectedActiveDisks;
Line 106: }
Line 107:
Line 234:
getSnapshotDao().updateStatus(createdSnapshot.getId(), SnapshotStatus.OK);
Line 235:
Line 236: if (isLiveSnapshotApplicable()) {
Line 237: performLiveSnapshot(createdSnapshot);
Line 238: } else {
unrelated to the patch
Line 239: // If the created snapshot contains memory,
remove the memory volumes as
Line 240: // they are not in use since no live snapshot
was created
Line 241: if
(!createdSnapshot.getMemoryVolume().isEmpty()) {
Line 242: logMemorySavingFailed();
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DetachDiskFromVmCommand.java
Line 57: }
Line 58:
Line 59: // Check if disk has no snapshots before detaching it.
Line 60: if (retValue && DiskStorageType.IMAGE ==
disk.getDiskStorageType()) {
Line 61: // if a disk snapshot is attached, it can be detached as
it's snapshots are snapshots taken to it's "original"
I did not understand this comment.
Line 62: // vm.
Line 63: if (vmDevice.getSnapshotId() == null &&
getDiskImageDao().getAllSnapshotsForImageGroup(disk.getId()).size() > 1) {
Line 64:
addCanDoActionMessage(VdcBllMessages.ERROR_CANNOT_DETACH_DISK_WITH_SNAPSHOT);
Line 65: retValue = false;
Line 61: // if a disk snapshot is attached, it can be detached as
it's snapshots are snapshots taken to it's "original"
Line 62: // vm.
Line 63: if (vmDevice.getSnapshotId() == null &&
getDiskImageDao().getAllSnapshotsForImageGroup(disk.getId()).size() > 1) {
Line 64:
addCanDoActionMessage(VdcBllMessages.ERROR_CANNOT_DETACH_DISK_WITH_SNAPSHOT);
Line 65: retValue = false;
please fix the indentation.
Line 66: }
Line 67: }
Line 68: return retValue;
Line 69: }
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExtendImageSizeCommand.java
Line 202: List<Pair<VM, VmDevice>> attachedVmsInfo =
getVmDAO().getVmsWithPlugInfo(getImage().getId());
Line 203: vmsDiskPluggedTo = new LinkedList<>();
Line 204:
Line 205: for (Pair<VM, VmDevice> pair : attachedVmsInfo) {
Line 206: if (pair.getSecond().getIsPlugged() == Boolean.TRUE
&& pair.getSecond().getSnapshotId() == null) {
use equals, not ==
Line 207: vmsDiskPluggedTo.add(pair.getFirst());
Line 208: }
Line 209: }
Line 210: }
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllDisksByVmIdQuery.java
Line 51: getParameters().isFiltered());
Line 52:
Line 53: if (disksVmDevices.isEmpty()) {
Line 54: return Collections.emptyMap();
Line 55: }
This is redundant - just return the new HashMap...
Line 56:
Line 57: Map<Guid, VmDevice> toReturn = new HashMap<>();
Line 58: for (VmDevice diskVmDevice : disksVmDevices) {
Line 59: toReturn.put(diskVmDevice.getDeviceId(), diskVmDevice);
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HotPlugDiskToVmCommand.java
Line 39: }
Line 40:
Line 41: @Override
Line 42: protected boolean canDoAction() {
Line 43: performDbLoads();
really, REALLY, not a fan of loading data from the DB in CDAs.
But I guess it's already there...
Line 44:
Line 45: return
Line 46: isVmExist() &&
Line 47: isVmInUpPausedDownStatus() &&
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAllVmImagesCommand.java
Line 38: if (images == null) {
Line 39: images =
Line 40:
ImagesHandler.filterImageDisks(DbFacade.getInstance().getDiskDao().getAllForVm(getVmId()),
Line 41: true,
Line 42: false, true);
please adhere to the given format - this new "true" should be on it's own line.
Line 43: }
Line 44: for (DiskImage image : images) {
Line 45: if (Boolean.TRUE.equals(image.getActive())) {
Line 46: mImagesToBeRemoved.add(image.getImageId());
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
Line 86: private boolean removeVm() {
Line 87: final List<DiskImage> diskImages =
ImagesHandler.filterImageDisks(getVm().getDiskList(),
Line 88: true,
Line 89: false, true);
Line 90:
please adhere to the given format - this new "true" should be on it's own line.
Line 91: TransactionSupport.executeInNewTransaction(new
TransactionMethod<Void>() {
Line 92: @Override
Line 93: public Void runInTransaction() {
Line 94: removeVmFromDb();
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmTemplateCommand.java
Line 135: } else {
Line 136: List<DiskImage> vmDIsks =
Line 137:
ImagesHandler.filterImageDisks(getDbFacade().getDiskDao().getAllForVm(vm.getId()),
Line 138: false,
Line 139: false, true);
please adhere to the given format - this new "true" should be on it's own line.
Line 140: Set<Guid> domainsIds =
getStorageDoaminsByDisks(vmDIsks, false);
Line 141: for (Guid domainId : domainsIds) {
Line 142: if
(!getParameters().getStorageDomainsList().contains(domainId)) {
Line 143: problematicVmNames.add(vm.getName());
Line 159: if (imageTemplates == null) {
Line 160: imageTemplates =
Line 161:
ImagesHandler.filterImageDisks(DbFacade.getInstance().getDiskDao().getAllForVm(getVmTemplateId()),
Line 162: false,
Line 163: false, true);
please adhere to the given format - this new "true" should be on it's own line.
Line 164: }
Line 165: }
Line 166:
Line 167: /**
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SPMAsyncTask.java
Line 403:
Line 404: public void stopTask() {
Line 405: stopTask(false);
Line 406: }
Line 407:
why move it?
Line 408: public void clearAsyncTask() {
Line 409: // if we are calling updateTask on a task which has not been
submitted,
Line 410: // to vdsm there is no need to clear the task. The task is
just deleted
Line 411: // from the database
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java
Line 48: implements QuotaStorageDependent {
Line 49:
Line 50: private List<PermissionSubject> listPermissionSubjects;
Line 51: private Map<Guid, List<Disk>> otherVmDisks = new HashMap<Guid,
List<Disk>>();
Line 52: // vms that the disk (active image) is plugged to
please use javadoc syntax - /** */
Line 53: private List<VM> vmsDiskPluggedTo;
Line 54: // vms that a snapshot of the disk is plugged to.
Line 55: private List<VM> vmsDiskSnapshotPluggedTo;
Line 56: // vms that a disk or it's sansphot is plugged to.
Line 60: private Disk oldDisk;
Line 61:
Line 62: public UpdateVmDiskCommand(T parameters) {
Line 63: super(parameters);
Line 64: loadVmDiskAttachedToInfo();
why in the ctor instead of a proper getter?
DB code in the ctor is an opening to a world of problems.
Line 65: }
Line 66:
Line 67: /**
Line 68: * This constructor is mandatory for activation of the
compensation process
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
Line 252
Line 253
Line 254
Line 255
Line 256
why is it OK to drop this condition?
Line 251: }
Line 252:
Line 253: private static void clearVmDisks(VM vm) {
Line 254: vm.getDiskList().clear();
Line 255: vm.getDiskMap().clear();
why isn't this a utility method in VM?
Line 256: }
Line 257:
Line 258: public static void updateDisksForVm(VM vm, Collection<? extends
Disk> diskList) {
Line 259: for (Disk disk : diskList) {
Line 269:
Line 270: public static void filterDisksForVM(VM vm,
Line 271: boolean
allowOnlyNotShareableDisks,
Line 272: boolean
allowOnlySnapableDisks,
Line 273: boolean
allowOnlyActiveDisks) {
indentation
Line 274: List<DiskImage> filteredDisks =
ImagesHandler.filterImageDisks(vm.getDiskList(), allowOnlyNotShareableDisks,
allowOnlySnapableDisks, allowOnlyActiveDisks);
Line 275: Collection<DiskImage> vmDisksToRemove =
CollectionUtils.subtract(vm.getDiskList(), filteredDisks);
Line 276: // done so that lun disks would be included as well
Line 277: Collection<Disk> vmDisksAfterFilter =
CollectionUtils.disjunction(vm.getDiskMap().values(), vmDisksToRemove);
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsValidator.java
Line 93: public ValidationResult snapshotExists(Snapshot snapshot) {
Line 94: return createSnapshotExistsResult(snapshot != null);
Line 95: }
Line 96:
Line 97: /***
s/***/**/
Line 98: * Checks if the given snapshot's tyoe is within the given types.
Line 99: * @param snapshot
Line 100: * @param supportedtypes
Line 101: * @return
Line 94: return createSnapshotExistsResult(snapshot != null);
Line 95: }
Line 96:
Line 97: /***
Line 98: * Checks if the given snapshot's tyoe is within the given types.
s/tyoe/type/
Line 99: * @param snapshot
Line 100: * @param supportedtypes
Line 101: * @return
Line 102: */
....................................................
File
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/DiskImagesValidator.java
Line 109: for (VmDevice device : devices) {
Line 110: if (device.getSnapshotId() != null) {
Line 111: VM vm = getVmDAO().get(device.getVmId());
Line 112: Snapshot snapshot =
getSnapshotDAO().get(device.getSnapshotId());
Line 113:
pluggedDiskSnapshotInfo.add(diskImage.getDiskAlias()+" (from Snapshot: " +
snapshot.getDescription() + " VM plugged to: " + vm.getName() + ")" + "\n");
use string.format instead of +.
specifically, you should be using %n instead of \n
Line 114: }
Line 115: }
Line 116: }
Line 117:
....................................................
File
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/DiskDaoTest.java
Line 189
Line 190
Line 191
Line 192
Line 193
WAT
....................................................
File
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java
Line 230: if (disk1.isBoot() == disk2.isBoot()) {
Line 231: return 0;
Line 232: }
Line 233:
Line 234: return disk1.isBoot() ? 1 : -1;
The entire implementation of this method should just be
Boolean.compare(disk1.isBoot(), disk2.isBoot())
Line 235: }
Line 236: });
Line 237: return diskImages;
Line 238: }
....................................................
File packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
Line 206: select fn_db_add_config_value('NetworkQosSupported','false','3.2');
Line 207: select
fn_db_add_config_value('HotPlugDiskSnapshotSupported','false','3.0');
Line 208: select
fn_db_add_config_value('HotPlugDiskSnapshotSupported','false','3.1');
Line 209: select
fn_db_add_config_value('HotPlugDiskSnapshotSupported','false','3.2');
Line 210: select
fn_db_add_config_value('HotPlugDiskSnapshotSupported','true','3.3');
IIUC, you don't need to explicitly specify the default value for the current
version.
Line 211:
Line 212: -- by default use no proxy
Line 213: select fn_db_add_config_value('SpiceProxyDefault','','general');
Line 214:
--
To view, visit http://gerrit.ovirt.org/17679
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I02579bf1a91cd294a5040acf432f1fdb87eb18c1
Gerrit-PatchSet: 27
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Liron Ar <[email protected]>
Gerrit-Reviewer: Alissa Bonas <[email protected]>
Gerrit-Reviewer: Allon Mureinik <[email protected]>
Gerrit-Reviewer: Ayal Baron <[email protected]>
Gerrit-Reviewer: Daniel Erez <[email protected]>
Gerrit-Reviewer: Federico Simoncelli <[email protected]>
Gerrit-Reviewer: Liron Ar <[email protected]>
Gerrit-Reviewer: Maor Lipchuk <[email protected]>
Gerrit-Reviewer: Tal Nisan <[email protected]>
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches