Gustavo Frederico Temple Pedrosa has uploaded a new change for review. Change subject: webadmin: Disk hotplug validation - Patch 2 of 2 ......................................................................
webadmin: Disk hotplug validation - Patch 2 of 2 This change prevents the hot (un)plugging of disks in VMs that do not support it. The parameter used to determine if hotplugging is supported was changed from a field hard-coded to a property in the osinfo file. Change-Id: Ibaf9f42976ea5fc0c7fbc79e3ebe4f9386c94a71 Signed-off-by: Gustavo Pedrosa <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java 2 files changed, 48 insertions(+), 3 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/28/19628/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java index c27ba13..d115a9f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; @@ -164,6 +165,9 @@ // cached NIC hotplug support map private static Map<Pair<Integer, Version>, Boolean> nicHotplugSupportMap; + // cached disk hotpluggable interfaces map + private static Map<Pair<Integer, Version>, ArrayList<String>> diskHotpluggableInterfacesMap; + // cached windows OS private static List<Integer> windowsOsIds; @@ -208,6 +212,7 @@ initWindowsOsTypes(); initHasSpiceSupport(); initNicHotplugSupportMap(); + initDiskHotpluggableInterfacesMap(); } public static void initNicHotplugSupportMap() { @@ -237,6 +242,43 @@ return false; } + public static void initDiskHotpluggableInterfacesMap() { + AsyncQuery callback = new AsyncQuery(); + callback.asyncCallback = new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object returnValue) { + diskHotpluggableInterfacesMap = (Map<Pair<Integer, Version>, ArrayList<String>>) ((VdcQueryReturnValue) returnValue) + .getReturnValue(); + } + }; + Frontend.RunQuery(VdcQueryType.OsRepository, new OsQueryParameters( + OsRepositoryVerb.GetDiskHotpluggableInterfacesMap), callback); + } + + public static Map<Pair<Integer, Version>, ArrayList<String>> getDiskHotpluggableInterfacesMap() { + return diskHotpluggableInterfacesMap; + } + + public static Collection<DiskInterface> getDiskHotpluggableInterfaces(Integer osId, Version version) { + Pair<Integer, Version> pair = new Pair<Integer, Version>(osId, version); + + if (getDiskHotpluggableInterfacesMap().containsKey(pair)) { + List<String> diskHotpluggableInterfaces = getDiskHotpluggableInterfacesMap().get(pair); + + if (diskHotpluggableInterfaces != null && !diskHotpluggableInterfaces.isEmpty()) { + Collection<DiskInterface> diskInterfaces = new HashSet<DiskInterface>(); + + for (String diskHotpluggableInterface : diskHotpluggableInterfaces) { + diskInterfaces.add(DiskInterface.valueOf(diskHotpluggableInterface)); + } + + return diskInterfaces; + } + } + + return Collections.emptyList(); + } + public static void getDomainListViaPublic(AsyncQuery aQuery, boolean filterInternalDomain) { aQuery.converterCallback = new IAsyncConverter() { @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java index 9cffc49..a568b5b 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java @@ -16,7 +16,6 @@ import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType; import org.ovirt.engine.core.common.businessentities.DiskImage; -import org.ovirt.engine.core.common.businessentities.DiskInterface; import org.ovirt.engine.core.common.businessentities.ImageStatus; import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.core.common.businessentities.StoragePool; @@ -627,8 +626,12 @@ disk.getDiskStorageType() == DiskStorageType.IMAGE && ((DiskImage) disk).getImageStatus() == ImageStatus.LOCKED; - if (disk.getPlugged() == plug || isLocked || (disk.getDiskInterface() == DiskInterface.IDE && !isVmDown())) - { + if (disk.getPlugged() == plug + || isLocked + || (!AsyncDataProvider.getDiskHotpluggableInterfaces( + getEntity().getOs(), + getEntity().getVdsGroupCompatibilityVersion()) + .contains(disk.getDiskInterface()) && !isVmDown())) { return false; } } -- To view, visit http://gerrit.ovirt.org/19628 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibaf9f42976ea5fc0c7fbc79e3ebe4f9386c94a71 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Gustavo Frederico Temple Pedrosa <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
