Gilad Chaplik has posted comments on this change. Change subject: core: add disk profile to disk's commands ......................................................................
Patch Set 13: (19 comments) new patch to follow http://gerrit.ovirt.org/#/c/29038/13/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java: Line 598: } Line 599: Line 600: protected boolean setAndValidateDiskProfiles() { Line 601: if (getDiskImageInfo() != null Line 602: && DiskStorageType.IMAGE == getDiskImageInfo().getDiskStorageType()) { > the if clause can be removed, see from where this method is called Done Line 603: Map<DiskImage, Guid> map = new HashMap<>(); Line 604: map.put(getDiskImageInfo(), getStorageDomainId()); Line 605: return validate(DiskProfileHelper.setAndValidateDiskProfiles(map)); Line 606: } Line 600: protected boolean setAndValidateDiskProfiles() { Line 601: if (getDiskImageInfo() != null Line 602: && DiskStorageType.IMAGE == getDiskImageInfo().getDiskStorageType()) { Line 603: Map<DiskImage, Guid> map = new HashMap<>(); Line 604: map.put(getDiskImageInfo(), getStorageDomainId()); > replace with Collections.singletonMap Done Line 605: return validate(DiskProfileHelper.setAndValidateDiskProfiles(map)); Line 606: } Line 607: return true; Line 608: } http://gerrit.ovirt.org/#/c/29038/13/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java: Line 595: } Line 596: Line 597: protected boolean setAndValidateDiskProfiles() { Line 598: Map<DiskImage, Guid> map = new HashMap<>(); Line 599: if (diskInfoDestinationMap != null) { > create the map here only when needed Done Line 600: for (DiskImage diskImage : diskInfoDestinationMap.values()) { Line 601: map.put(diskImage, diskImage.getStorageIds().get(0)); Line 602: } Line 603: } Line 600: for (DiskImage diskImage : diskInfoDestinationMap.values()) { Line 601: map.put(diskImage, diskImage.getStorageIds().get(0)); Line 602: } Line 603: } Line 604: return validate(DiskProfileHelper.setAndValidateDiskProfiles(map)); > move this to the if caluse, here you can return true. Done Line 605: } Line 606: Line 607: protected boolean checkTemplateImages(List<String> reasons) { Line 608: if (getParameters().getParentCommand() == VdcActionType.AddVmPoolWithVms) { http://gerrit.ovirt.org/#/c/29038/13/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java: Line 408: return doClusterRelatedChecks(); Line 409: } Line 410: } Line 411: Line 412: protected boolean setAndValidateDiskProfiles() { > same as previous file Done Line 413: Map<DiskImage, Guid> map = new HashMap<>(); Line 414: if (diskInfoDestinationMap != null) { Line 415: for (DiskImage diskImage : diskInfoDestinationMap.values()) { Line 416: map.put(diskImage, diskImage.getStorageIds().get(0)); http://gerrit.ovirt.org/#/c/29038/13/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java: Line 624: Line 625: protected boolean setAndValidateDiskProfiles() { Line 626: if (getDisksList() != null) { Line 627: Map<DiskImage, Guid> map = new HashMap<>(); Line 628: for (DiskImage diskImage : getDisksList()) { > when we create a snapshot, all the disks already have a profile that will happen by default, we're handling disks and not snapshots. Line 629: map.put(diskImage, diskImage.getStorageIds().get(0)); Line 630: } Line 631: return validate(DiskProfileHelper.setAndValidateDiskProfiles(map)); Line 632: } http://gerrit.ovirt.org/#/c/29038/13/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java: Line 1291: protected boolean setAndValidateDiskProfiles() { Line 1292: if (getParameters().getVm().getDiskMap() != null) { Line 1293: Map<DiskImage, Guid> map = new HashMap<>(); Line 1294: for (Disk disk : getParameters().getVm().getDiskMap().values()) { Line 1295: if (disk instanceof DiskImage) { > check it like this - disk,getDiskStorageType() == DiskStorageType.IMAGE Done Line 1296: DiskImage diskImage = (DiskImage) disk; Line 1297: map.put(diskImage, imageToDestinationDomainMap.get(diskImage.getId())); Line 1298: } Line 1299: } http://gerrit.ovirt.org/#/c/29038/13/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java: Line 550: Line 551: protected boolean setAndValidateDiskProfiles() { Line 552: if (getParameters().getVmTemplate().getDiskList() != null) { Line 553: Map<DiskImage, Guid> map = new HashMap<>(); Line 554: for (Disk disk : getParameters().getVmTemplate().getDiskList()) { > /s/Disk/DiskImage Done Line 555: if (disk instanceof DiskImage) { Line 556: DiskImage diskImage = (DiskImage) disk; Line 557: map.put(diskImage, imageToDestinationDomainMap.get(diskImage.getId())); Line 558: } Line 551: protected boolean setAndValidateDiskProfiles() { Line 552: if (getParameters().getVmTemplate().getDiskList() != null) { Line 553: Map<DiskImage, Guid> map = new HashMap<>(); Line 554: for (Disk disk : getParameters().getVmTemplate().getDiskList()) { Line 555: if (disk instanceof DiskImage) { > getDiskList() returns a list of disk image, no need for the instance check. Done Line 556: DiskImage diskImage = (DiskImage) disk; Line 557: map.put(diskImage, imageToDestinationDomainMap.get(diskImage.getId())); Line 558: } Line 559: } http://gerrit.ovirt.org/#/c/29038/13/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyDiskCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyDiskCommand.java: Line 388: public String getDiskAlias() { Line 389: return getImage().getDiskAlias(); Line 390: } Line 391: Line 392: protected boolean setAndValidateDiskProfiles() { > this shoud be executed here only if the operation is "copy" (which is possi can you please elaborate why it has to be separated ? it's implemented here for both. similar code is already tested for at least 3 versions, we can do a refactoring later on. Line 393: if (getImage() != null Line 394: && DiskStorageType.IMAGE == getImage().getDiskStorageType()) { Line 395: // created a dummy disk image wrapper to allow Disk Profile check. Line 396: DiskImage diskImage = new DiskImage(); Line 390: } Line 391: Line 392: protected boolean setAndValidateDiskProfiles() { Line 393: if (getImage() != null Line 394: && DiskStorageType.IMAGE == getImage().getDiskStorageType()) { > getImage() won't return something that isn't image :) Done Line 395: // created a dummy disk image wrapper to allow Disk Profile check. Line 396: DiskImage diskImage = new DiskImage(); Line 397: diskImage.setDiskProfileId(getParameters().getDiskProfileId()); Line 398: Map<DiskImage, Guid> map = new HashMap<>(); Line 391: Line 392: protected boolean setAndValidateDiskProfiles() { Line 393: if (getImage() != null Line 394: && DiskStorageType.IMAGE == getImage().getDiskStorageType()) { Line 395: // created a dummy disk image wrapper to allow Disk Profile check. > why? actually that's wrong, we're using parameter in execute and not the image (so I'm changing it in parent exectue, since diskProfileId isn't mandatory). Line 396: DiskImage diskImage = new DiskImage(); Line 397: diskImage.setDiskProfileId(getParameters().getDiskProfileId()); Line 398: Map<DiskImage, Guid> map = new HashMap<>(); Line 399: map.put(diskImage, getParameters().getStorageDomainId()); http://gerrit.ovirt.org/#/c/29038/13/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RegisterDiskCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RegisterDiskCommand.java: Line 88: } Line 89: Line 90: protected boolean setAndValidateDiskProfiles() { Line 91: if (getParameters().getDiskImage() != null Line 92: && DiskStorageType.IMAGE == getParameters().getDiskImage().getDiskStorageType()) { > unneeded checks Done Line 93: Map<DiskImage, Guid> map = new HashMap<>(); Line 94: map.put(getParameters().getDiskImage(), getStorageDomainId()); Line 95: return validate(DiskProfileHelper.setAndValidateDiskProfiles(map)); Line 96: } Line 89: Line 90: protected boolean setAndValidateDiskProfiles() { Line 91: if (getParameters().getDiskImage() != null Line 92: && DiskStorageType.IMAGE == getParameters().getDiskImage().getDiskStorageType()) { Line 93: Map<DiskImage, Guid> map = new HashMap<>(); > Collections.singletonMap Done Line 94: map.put(getParameters().getDiskImage(), getStorageDomainId()); Line 95: return validate(DiskProfileHelper.setAndValidateDiskProfiles(map)); Line 96: } Line 97: return true; http://gerrit.ovirt.org/#/c/29038/13/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmOnceCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmOnceCommand.java: Line 157: && getVmDynamicDao().get(getVmId()).getStatus() == VMStatus.Paused; Line 158: ExecutionHandler.endJob(executionContext, runAndPausedSucceeded); Line 159: } Line 160: Line 161: protected boolean setAndValidateDiskProfiles() { > can you elaborate why it's needed here? you'd like to have qos defined for run once state. Line 162: if (isRunAsStateless() && getVm().getDiskList() != null) { Line 163: Map<DiskImage, Guid> map = new HashMap<>(); Line 164: for (DiskImage diskImage : getVm().getDiskList()) { Line 165: map.put(diskImage, diskImage.getStorageIds().get(0)); http://gerrit.ovirt.org/#/c/29038/13/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java: Line 523: } Line 524: return null; Line 525: } Line 526: Line 527: protected boolean setAndValidateDiskProfiles() { > why it's needed here? the disk already exists. can the profile be updated? * yes, we need to check disk profiles for update disk. * yes the profile can be updated. * it's a user choice, but if he doesn't provide it (null) and there's only one DP for SD we set it. Line 528: if (isDiskImage()) { Line 529: DiskImage diskImage = (DiskImage) getNewDisk(); Line 530: Map<DiskImage, Guid> map = new HashMap<>(); Line 531: map.put(diskImage, diskImage.getStorageIds().get(0)); http://gerrit.ovirt.org/#/c/29038/13/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java: Line 257: addCanDoActionMessage(VdcBllMessages.VAR__ACTION__MOVE); Line 258: addCanDoActionMessage(VdcBllMessages.VAR__TYPE__VM_DISK); Line 259: } Line 260: Line 261: protected boolean setAndValidateDiskProfiles() { > seems to me that this validation should be on MoveDisksCommand instead of h same as previous, can be later refactored. Line 262: Map<DiskImage, Guid> map = new HashMap<>(); Line 263: for (LiveMigrateDiskParameters parameters : getParameters().getParametersList()) { Line 264: DiskImage diskImage = getDiskImageByImageId(parameters.getImageId()); Line 265: if (diskImage != null && diskImage.getDiskStorageType() == DiskStorageType.IMAGE) { http://gerrit.ovirt.org/#/c/29038/13/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileHelper.java File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileHelper.java: Line 34: for (Entry<DiskImage, Guid> entry : map.entrySet()) { Line 35: DiskImage diskImage = entry.getKey(); Line 36: Guid storageDomainId = entry.getValue(); Line 37: DiskProfile diskProfile = null; Line 38: if (diskImage.getDiskProfileId() == null && storageDomainId != null) { // set disk profile if there's only 1 for SD. > move the code from line 43 to here and check if it's null instead of "conta please read the commit message. iff the DiskProfileId is null I set it. Line 39: if (!storageDiskProfilesMap.containsKey(storageDomainId)) { Line 40: storageDiskProfilesMap.put(storageDomainId, Line 41: getDiskProfileDao().getAllForStorageDomain(storageDomainId)); Line 42: } Line 48: } else { Line 49: diskProfile = getDiskProfileDao().get(diskImage.getDiskProfileId()); Line 50: } Line 51: Line 52: ValidationResult result = new DiskProfileValidator(diskProfile).isStorageDomainValid(storageDomainId); > please file a bug to eliminate those unneeded checks when we set the profil didn't get you. Line 53: if (result != ValidationResult.VALID) { Line 54: return result; Line 55: } Line 56: } -- To view, visit http://gerrit.ovirt.org/29038 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie7b6d977243cffc0bde772665ebaca47340075c6 Gerrit-PatchSet: 13 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Gilad Chaplik <gchap...@redhat.com> Gerrit-Reviewer: Allon Mureinik <amure...@redhat.com> Gerrit-Reviewer: Arik Hadas <aha...@redhat.com> Gerrit-Reviewer: Daniel Erez <de...@redhat.com> Gerrit-Reviewer: Doron Fediuck <dfedi...@redhat.com> Gerrit-Reviewer: Gilad Chaplik <gchap...@redhat.com> Gerrit-Reviewer: Liron Aravot <lara...@redhat.com> Gerrit-Reviewer: Tal Nisan <tni...@redhat.com> Gerrit-Reviewer: automat...@ovirt.org Gerrit-Reviewer: oVirt Jenkins CI Server Gerrit-HasComments: Yes _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches