Martin Sivák has uploaded a new change for review.

Change subject: core: Push ioTune QoS info when hotplugging disk
......................................................................

core: Push ioTune QoS info when hotplugging disk

This adds the support for disk QoS for disks that are hotplugged
while the VM is already running.

Change-Id: Ic4bb85cd307089088be77cff28adbc783ebcaedd
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1145665
Signed-off-by: Martin Sivák <[email protected]>
---
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HotPlugDiskVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
2 files changed, 16 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/07/33907/1

diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HotPlugDiskVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HotPlugDiskVDSCommand.java
index 0abdede..998ff83 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HotPlugDiskVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HotPlugDiskVDSCommand.java
@@ -16,6 +16,7 @@
 import org.ovirt.engine.core.common.businessentities.VolumeFormat;
 import org.ovirt.engine.core.common.utils.VmDeviceType;
 import org.ovirt.engine.core.common.vdscommands.HotPlugDiskVDSParameters;
+import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.utils.archstrategy.ArchStrategyFactory;
 import org.ovirt.engine.core.vdsbroker.architecture.GetControllerIndices;
@@ -66,6 +67,19 @@
             drive.put(VdsProperties.VolumeId, 
diskImage.getImageId().toString());
             drive.put(VdsProperties.ImageId, diskImage.getId().toString());
             drive.put(VdsProperties.PropagateErrors, 
disk.getPropagateErrors().toString().toLowerCase());
+
+            // maps to avoid fetching qos object for same disk profile id
+            Map<Guid, Guid> diskProfileStorageQosMap = new HashMap<>();
+            Map<Guid, Map<String, Integer>> storageQosIoTuneMap = new 
HashMap<>();
+            Map<String, Integer> ioTune =
+                    VmInfoBuilder.buildIoTune(diskImage, 
diskProfileStorageQosMap, storageQosIoTuneMap);
+            if (ioTune != null) {
+                if (vmDevice.getSpecParams() == null) {
+                    vmDevice.setSpecParams(new HashMap<String, Object>());
+                }
+                vmDevice.getSpecParams().put(VdsProperties.Iotune, ioTune);
+            }
+
         } else {
             LunDisk lunDisk = (LunDisk) disk;
 
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
index 5d853a1..c46a9bf 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
@@ -359,7 +359,7 @@
         ArchStrategyFactory.getStrategy(vm.getClusterArch()).run(new 
CreateAdditionalControllers(devices));
     }
 
-    private Map<String, Integer> buildIoTune(DiskImage diskImage,
+    static Map<String, Integer> buildIoTune(DiskImage diskImage,
             Map<Guid, Guid> diskProfileStorageQosMap,
             Map<Guid, Map<String, Integer>> storageQosIoTuneMap) {
         Guid diskProfileId = diskImage.getDiskProfileId();
@@ -385,7 +385,7 @@
         return null;
     }
 
-    private Map<String, Integer> buildIoTuneMap(StorageQos storageQos) {
+    private static Map<String, Integer> buildIoTuneMap(StorageQos storageQos) {
         // build map
         Map<String, Integer> ioTuneMap = new HashMap<>();
         if (storageQos.getMaxThroughput() != null) {


-- 
To view, visit http://gerrit.ovirt.org/33907
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic4bb85cd307089088be77cff28adbc783ebcaedd
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Martin Sivák <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to