Daniel Erez has uploaded a new change for review.

Change subject: userportal: fix SD selection on clone VM from template
......................................................................

userportal: fix SD selection on clone VM from template

Fixing storage domain selection when creating a VM
from template using clone allocation.

DisksAllocationModel -> getImageToDestinationDomainMap()
should be passed to AddVmFromTemplateParameters
(for getting user's selected values).

Change-Id: I67e6c4af0ffed01f37bf3c5798654a250e45a018
Bug-Url: https://bugzilla.redhat.com/928399
Signed-off-by: Daniel Erez <[email protected]>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
3 files changed, 9 insertions(+), 41 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/70/13770/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
index cc023a0..2f9c71f 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
@@ -798,6 +798,8 @@
                     }
                 } else if ("IsCustomPropertiesTabAvailable".equals(propName)) 
{ //$NON-NLS-1$
                     setupCustomPropertiesAvailability(object);
+                } else if ("IsDisksAvailable".equals(propName)) { //$NON-NLS-1$
+                    addDiskAllocation(object);
                 }
             }
         });
@@ -815,13 +817,6 @@
 
         // only for non local storage available
         setupHostTabAvailability(object);
-
-        object.getStorageDomain().getItemsChangedEvent().addListener(new 
IEventListener() {
-            @Override
-            public void eventRaised(Event ev, Object sender, EventArgs args) {
-                addDiskAllocation(object);
-            }
-        });
 
         object.getProvisioning().getPropertyChangedEvent().addListener(new 
IEventListener() {
             @Override
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java
index 336f3c2..593f7e9 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java
@@ -957,19 +957,6 @@
         return list;
     }
 
-    public static ArrayList<StorageDomain> 
getStorageDomainsDisjoint(ArrayList<DiskModel> disks,
-            ArrayList<StorageDomain> storageDomains) {
-        ArrayList<ArrayList<StorageDomain>> storageDomainslists = new 
ArrayList<ArrayList<StorageDomain>>();
-        for (DiskModel diskModel : disks) {
-            ArrayList<StorageDomain> list =
-                    getStorageDomainsByIds(((DiskImage) 
diskModel.getDisk()).getStorageIds(), storageDomains);
-
-            storageDomainslists.add(list);
-        }
-
-        return Intersection(storageDomainslists);
-    }
-
     public static <T> ArrayList<EntityModel> ToEntityModelList(ArrayList<T> 
list)
     {
         ArrayList<EntityModel> entityModelList = new ArrayList<EntityModel>();
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
index 6efd341..0942843 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
@@ -38,13 +38,13 @@
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel;
 import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemType;
-import org.ovirt.engine.ui.uicommonweb.models.storage.DisksAllocationModel;
 import org.ovirt.engine.ui.uicompat.Constants;
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
 
 public abstract class VmModelBehaviorBase<TModel extends UnitVmModel> {
 
     private final Constants constants = 
ConstantsManager.getInstance().getConstants();
+
     private TModel privateModel;
 
     public TModel getModel() {
@@ -602,12 +602,10 @@
                 VmModelBehaviorBase behavior = (VmModelBehaviorBase) target;
                 ArrayList<StorageDomain> storageDomains = 
(ArrayList<StorageDomain>) returnValue;
                 ArrayList<StorageDomain> activeStorageDomains = 
FilterStorageDomains(storageDomains);
-                DisksAllocationModel disksAllocationModel = 
getModel().getDisksAllocationModel();
 
                 boolean provisioning = (Boolean) 
behavior.getModel().getProvisioning().getEntity();
                 ArrayList<DiskModel> disks = (ArrayList<DiskModel>) 
behavior.getModel().getDisks();
                 Linq.Sort(activeStorageDomains, new 
Linq.StorageDomainByNameComparer());
-                
disksAllocationModel.setActiveStorageDomains(activeStorageDomains);
 
                 for (DiskModel diskModel : disks) {
                     ArrayList<StorageDomain> availableDiskStorageDomains = new 
ArrayList<StorageDomain>();
@@ -618,27 +616,15 @@
                     ArrayList<StorageDomain> activeDiskStorageDomains =
                             Linq.getStorageDomainsByIds(storageIds, 
activeStorageDomains);
 
-                    if (provisioning) {
-                        if (activeDiskStorageDomains.size() > 0) {
-                            availableDiskStorageDomains = activeStorageDomains;
-                        }
-                    }
-                    else {
-                        availableDiskStorageDomains = activeDiskStorageDomains;
-                    }
+                    // Set target storage domains
+                    availableDiskStorageDomains = provisioning ? 
activeStorageDomains : activeDiskStorageDomains;
                     Linq.Sort(availableDiskStorageDomains, new 
Linq.StorageDomainByNameComparer());
                     
diskModel.getStorageDomain().setItems(availableDiskStorageDomains);
+
+                    
diskModel.getStorageDomain().setIsChangable(!availableDiskStorageDomains.isEmpty());
+                    diskModel.getStorageDomain().setChangeProhibitionReason(
+                            
constants.noActiveTargetStorageDomainAvailableMsg());
                 }
-
-                ArrayList<StorageDomain> storageDomainsDisjoint =
-                        Linq.getStorageDomainsDisjoint(disks, 
activeStorageDomains);
-
-                Linq.Sort(storageDomainsDisjoint, new 
Linq.StorageDomainByNameComparer());
-
-                ArrayList<StorageDomain> singleDestDomains =
-                        provisioning ? activeStorageDomains : 
storageDomainsDisjoint;
-                getModel().getStorageDomain().setItems(singleDestDomains);
-                
getModel().getStorageDomain().setSelectedItem(Linq.FirstOrDefault(singleDestDomains));
             }
         }, getModel().getHash()), dataCenter.getId(), ActionGroup.CREATE_VM);
     }


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

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

Reply via email to