Tal Nisan has uploaded a new change for review.

Change subject: webadmin: Fix disk alias recycling
......................................................................

webadmin: Fix disk alias recycling

When creating a new disk via webadmin, the suggested disk alias created the
suggested alias from the VM name concated with the amount of the disk on the
VM + 1, in case all disk were created by that convention, deleting a disk
which is not the last one and adding a new disk resulted in a suggested disk
alias which matches the last disk alias exactly

Change-Id: Ie852fbcf26c0742c610631a121b9bfd706c01218
Signed-off-by: Tal Nisan <[email protected]>
Bug-url: https://bugzilla.redhat.com/1022795
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetNextAvailableDiskAliasNameByVMIdQuery.java
1 file changed, 18 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/61/24061/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetNextAvailableDiskAliasNameByVMIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetNextAvailableDiskAliasNameByVMIdQuery.java
index ed05073..e62ec32 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetNextAvailableDiskAliasNameByVMIdQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetNextAvailableDiskAliasNameByVMIdQuery.java
@@ -1,5 +1,9 @@
 package org.ovirt.engine.core.bll;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.ovirt.engine.core.common.businessentities.Disk;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
 
@@ -18,8 +22,12 @@
             VM vm = getDbFacade().getVmDao().get(getParameters().getId(), 
getUserID(), getParameters().isFiltered());
             if (vm != null) {
                 updateDisksFromDb(vm);
-                suggestedDiskName =
-                        ImagesHandler.getDefaultDiskAlias(vm.getName(), 
Integer.toString(vm.getDiskMapCount() + 1));
+                List<String> aliases = createDiskAliasesList(vm);
+                int i = 0;
+                do {
+                    i++;
+                    suggestedDiskName = 
ImagesHandler.getDefaultDiskAlias(vm.getName(), 
Integer.toString(vm.getDiskMapCount() + i));
+                } while(aliases.contains(suggestedDiskName));
             }
             getQueryReturnValue().setReturnValue(suggestedDiskName);
         }
@@ -28,4 +36,12 @@
     protected void updateDisksFromDb(VM vm) {
         VmHandler.updateDisksFromDb(vm);
     }
+
+    private List<String> createDiskAliasesList(VM vm) {
+        List<String> diskAliases = new ArrayList<>(vm.getDiskMap().size());
+        for (Disk disk : vm.getDiskMap().values()) {
+            diskAliases.add(disk.getDiskAlias());
+        }
+        return diskAliases;
+    }
 }


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

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

Reply via email to