Gilad Chaplik has uploaded a new change for review.

Change subject: webadmin: cannot import collapsed snapshot VM (#845947)
......................................................................

webadmin: cannot import collapsed snapshot VM (#845947)

https://bugzilla.redhat.com/845947

in case the template was missing in the system, but resided in the export 
domain,
the dialog mistakenly denided importing the vm.
now it just adding a comment and allowing import only with collapse snapshot.

Change-Id: I80f1a8e999dda31f644cdf767eeb536109049a26
Signed-off-by: Gilad Chaplik <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/VmBackupModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmModel.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
3 files changed, 61 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/15/7815/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/VmBackupModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/VmBackupModel.java
index f74a626..b97f318 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/VmBackupModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/VmBackupModel.java
@@ -194,6 +194,7 @@
         ImportVmModel model = new ImportVmModel();
         
model.setTitle(ConstantsManager.getInstance().getConstants().importVirtualMachinesTitle());
         model.setHashName("import_virtual_machine"); //$NON-NLS-1$
+        model.setEntity(getEntity());
         return model;
     }
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmModel.java
index d52ba90..1f61b8a 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmModel.java
@@ -4,6 +4,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import org.ovirt.engine.core.common.businessentities.Disk;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
@@ -11,11 +12,14 @@
 import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.VolumeFormat;
 import org.ovirt.engine.core.common.businessentities.VolumeType;
 import org.ovirt.engine.core.common.businessentities.storage_domains;
 import org.ovirt.engine.core.common.businessentities.storage_pool;
 import org.ovirt.engine.core.common.interfaces.SearchType;
+import org.ovirt.engine.core.common.queries.DiskImageList;
+import 
org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParameters;
 import 
org.ovirt.engine.core.common.queries.GetAllRelevantQuotasForStorageParameters;
 import 
org.ovirt.engine.core.common.queries.GetAllRelevantQuotasForVdsGroupParameters;
 import org.ovirt.engine.core.common.queries.GetVmTemplatesDisksParameters;
@@ -53,6 +57,7 @@
     private VmImportDiskListModel importDiskListModel;
     private storage_pool storagePool;
     private boolean hasQuota;
+    private final Map<Guid, List<Disk>> missingTemplateDiskMap = new 
HashMap<Guid, List<Disk>>();
     protected ArrayList<storage_domains> filteredStorageDomains;
     private HashMap<Guid, VM> alreadyInSystemVmMap;
     private Map<Guid, ArrayList<Quota>> storageQuotaMap;
@@ -266,8 +271,10 @@
             }
         }
 
-        setMessage(isDefaultStorageApplicableForAllDisks ? "" :
-                
ConstantsManager.getInstance().getConstants().importNotApplicableForDefaultStorage());
+        if ((getMessage() == null || getMessage().isEmpty())
+                && !isDefaultStorageApplicableForAllDisks) {
+            
setMessage(ConstantsManager.getInstance().getConstants().importNotApplicableForDefaultStorage());
+        }
     }
 
     protected void checkDestFormatCompatibility() {
@@ -345,16 +352,18 @@
 
                                 if (storageDomains == null) {
                                     // Missing template disk
-                                    showCloseMessage(
-                                    
ConstantsManager.getInstance().getConstants().importMissingStorages());
-                                    return;
+                                    missingTemplateDiskMap.put(templateId, 
templateDiskMap.get(templateId));
                                 } else {
                                     setDiskImportData(disk.getId(), 
storageDomains, diskImage.getvolume_type());
                                 }
                             }
                         }
                     }
-                    postInitDisks();
+                    if (!missingTemplateDiskMap.keySet().isEmpty()) {
+                        getTemplatesFromExportDomain();
+                    } else {
+                        postInitDisks();
+                    }
                 }
             });
         } else {
@@ -363,6 +372,46 @@
 
     }
 
+    protected void getTemplatesFromExportDomain() {
+        GetAllFromExportDomainQueryParameters tempVar =
+                new GetAllFromExportDomainQueryParameters(storagePool.getId(), 
((storage_domains) getEntity())
+                        .getId());
+        tempVar.setGetAll(true);
+        Frontend.RunQuery(VdcQueryType.GetTemplatesFromExportDomain, tempVar, 
new AsyncQuery(ImportVmModel.this,
+                new INewAsyncCallback() {
+
+                    @Override
+                    public void OnSuccess(Object model, Object returnValue) {
+                        Map<VmTemplate, DiskImageList> dictionary =
+                                (HashMap<VmTemplate, DiskImageList>) 
((VdcQueryReturnValue) returnValue).getReturnValue();
+                        Map<Guid, Guid> tempMap = new HashMap<Guid, Guid>();
+                        for (Entry<VmTemplate, DiskImageList> entry : 
dictionary.entrySet()) {
+                            tempMap.put(entry.getKey().getId(), null);
+                        }
+                        for (Guid templateId : 
missingTemplateDiskMap.keySet()) {
+                            if (tempMap.containsKey(templateId)) {
+                                for (Disk disk : 
missingTemplateDiskMap.get(templateId)) {
+                                    setDiskImportData(disk.getId(),
+                                            filteredStorageDomains, 
((DiskImage) disk).getvolume_type());
+                                }
+                            } else {
+                                showCloseMessage(ConstantsManager.getInstance()
+                                        .getConstants()
+                                        .errorTemplateCannotBeFoundMessage());
+                                return;
+                            }
+                        }
+                        
ImportVmModel.this.setMessage(ConstantsManager.getInstance()
+                                .getConstants()
+                                .importMissingStorages());
+                        getCollapseSnapshots().setEntity(true);
+                        getCollapseSnapshots().setIsChangable(false);
+                        postInitDisks();
+                    }
+                }));
+
+    }
+
     protected void postInitDisks() {
         onDataLoad();
 
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
index adfedd2..a02f3f3 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
@@ -1516,12 +1516,15 @@
     String assignQuotaForDisk();
 
     @DefaultStringValue("Some imported VMs depend on one or more templates 
which are " +
-    "not available in the system. Either: 1. Import VMs with 'collapse 
snapshots' "+
-    "option 2. Import missing templates first and then try importing the VMs 
again")
+    "not available in the system. Therefore you must Import VMs with 'collapse 
snapshots', "+
+    "another option is to Import missing templates first and then try import 
the VMs again")
     String importMissingStorages();
 
     @DefaultStringValue("The selected default Storage Domain is not applicable 
for all disks " +
             "(i.e. some disks will be imported to a different Storage 
Domain).")
     String importNotApplicableForDefaultStorage();
 
+    @DefaultStringValue("Template cannot be found in the system, VM(s) cannot 
be imported")
+    String errorTemplateCannotBeFoundMessage();
+
 }


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

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

Reply via email to