Libor Spevak has uploaded a new change for review.

Change subject: userportal, webadmin: Show warning for non-exportable disks
......................................................................

userportal, webadmin: Show warning for non-exportable disks

Display warning in Create VM template, Export VM, Create VM snapshot dialogs, 
if non-exportable disks are detected
(e.g. shared disk, direct lun , ...), that these disks will not be part of the 
export.

For the detection, the Disk.isAllowSnapshot() is used.

Change-Id: I6a183931e36ccd4668225ad206edc4a5e58795e3
Bug-Url: https://bugzilla.redhat.com/855625
Signed-off-by: Libor Spevak <lspe...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.ui.xml
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/VmBaseListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExportVmModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SnapshotModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Messages.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmMakeTemplatePopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmExportPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmExportPopupView.ui.xml
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmMakeTemplatePopupView.java
16 files changed, 177 insertions(+), 31 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/44/11144/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.java
index 93713ad..d400ec7 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.java
@@ -5,6 +5,7 @@
 import org.ovirt.engine.core.compat.Event;
 import org.ovirt.engine.core.compat.EventArgs;
 import org.ovirt.engine.core.compat.IEventListener;
+import org.ovirt.engine.core.compat.PropertyChangedEventArgs;
 import org.ovirt.engine.ui.common.CommonApplicationConstants;
 import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
 import org.ovirt.engine.ui.common.idhandler.WithElementId;
@@ -12,6 +13,7 @@
 import org.ovirt.engine.ui.common.widget.editor.EntityModelCheckBoxEditor;
 import org.ovirt.engine.ui.common.widget.editor.EntityModelTextBoxEditor;
 import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor;
+import org.ovirt.engine.ui.common.widget.label.HtmlLabel;
 import org.ovirt.engine.ui.common.widget.renderer.NullSafeRenderer;
 import 
org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractModelBoundPopupWidget;
 import org.ovirt.engine.ui.common.widget.uicommon.storage.DisksAllocationView;
@@ -70,7 +72,8 @@
     EntityModelCheckBoxEditor isTemplatePublicEditor;
 
     @UiField
-    Label message;
+    @Ignore
+    HtmlLabel messageHTML;
 
     @UiField
     @Ignore
@@ -146,6 +149,16 @@
                 
disksAllocationLabel.getElement().getStyle().setColor(isDisksAllocationEnabled 
? "black" : "grey"); //$NON-NLS-1$ //$NON-NLS-2$
             }
         });
+
+        model.getPropertyChangedEvent().addListener(new IEventListener() {
+            @Override
+            public void eventRaised(Event ev, Object sender, EventArgs args) {
+                String propName = ((PropertyChangedEventArgs) 
args).PropertyName;
+                if ("Message".equals(propName)) { //$NON-NLS-1$
+                    
VmMakeTemplatePopupWidget.this.setMessage(model.getMessage());
+                }
+            }
+        });
     }
 
     private void addDiskAllocation(UnitVmModel model) {
@@ -174,4 +187,9 @@
         isTemplatePublicEditor.setTabIndex(nextTabIndex++);
         return nextTabIndex;
     }
+
+    public void setMessage(String message) {
+        messageHTML.appendText(message);
+    }
+
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.ui.xml
index 703a9fc..d5dc6b3 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.ui.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
 <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"
-       xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" 
xmlns:w="urn:import:org.ovirt.engine.ui.common.widget.uicommon.storage">
+       xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" 
+       xmlns:w="urn:import:org.ovirt.engine.ui.common.widget.uicommon.storage"
+       xmlns:l="urn:import:org.ovirt.engine.ui.common.widget.label" >
 
        <ui:style  
type="org.ovirt.engine.ui.common.widget.uicommon.popup.vm.VmMakeTemplatePopupWidget.WidgetStyle">
                .content {
@@ -15,12 +17,12 @@
                .errorMessageLabel {
                        color: #CD2127;
                        position: absolute;
-                       bottom: 10px;
+                       bottom: 15px;
                }
                
                .isTemplatePublicEditor {
                        position: absolute;
-                       bottom: 30px;
+                       bottom: 40px;
                }
                
                .disksAllocationPanel {
@@ -44,7 +46,7 @@
                <w:DisksAllocationView ui:field="disksAllocationView" 
listHeight="170px" listWidth="445px" 
addStyleNames="{style.disksAllocationPanel}" />                      
                <g:VerticalPanel>
                        <e:EntityModelCheckBoxEditor 
ui:field="isTemplatePublicEditor" 
addStyleNames="{style.isTemplatePublicEditor}" />
-                       <g:Label ui:field="message" 
addStyleNames="{style.errorMessageLabel}" />
+                       <l:HtmlLabel ui:field="messageHTML" 
addStyleNames="{style.errorMessageLabel}" />
                </g:VerticalPanel>
        </g:FlowPanel>
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
index 917680b..a920655 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.java
@@ -1,9 +1,14 @@
 package org.ovirt.engine.ui.common.widget.uicommon.popup.vm;
 
+import org.ovirt.engine.core.compat.Event;
+import org.ovirt.engine.core.compat.EventArgs;
+import org.ovirt.engine.core.compat.IEventListener;
+import org.ovirt.engine.core.compat.PropertyChangedEventArgs;
 import org.ovirt.engine.ui.common.CommonApplicationConstants;
 import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
 import org.ovirt.engine.ui.common.idhandler.WithElementId;
 import org.ovirt.engine.ui.common.widget.editor.EntityModelTextBoxEditor;
+import org.ovirt.engine.ui.common.widget.label.HtmlLabel;
 import 
org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractModelBoundPopupWidget;
 import org.ovirt.engine.ui.uicommonweb.models.vms.SnapshotModel;
 
@@ -11,7 +16,6 @@
 import com.google.gwt.editor.client.SimpleBeanEditorDriver;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.VerticalPanel;
 
 public class VmSnapshotCreatePopupWidget extends 
AbstractModelBoundPopupWidget<SnapshotModel> {
@@ -34,7 +38,8 @@
     EntityModelTextBoxEditor descriptionEditor;
 
     @UiField
-    Label message;
+    @Ignore
+    HtmlLabel messageHTML;
 
     public VmSnapshotCreatePopupWidget(CommonApplicationConstants constants) {
         initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
@@ -48,8 +53,18 @@
     }
 
     @Override
-    public void edit(SnapshotModel object) {
-        Driver.driver.edit(object);
+    public void edit(final SnapshotModel model) {
+        Driver.driver.edit(model);
+
+        model.getPropertyChangedEvent().addListener(new IEventListener() {
+            @Override
+            public void eventRaised(Event ev, Object sender, EventArgs args) {
+                String propName = ((PropertyChangedEventArgs) 
args).PropertyName;
+                if ("Message".equals(propName)) { //$NON-NLS-1$
+                    
VmSnapshotCreatePopupWidget.this.setMessage(model.getMessage());
+                }
+            }
+        });
     }
 
     @Override
@@ -62,4 +77,8 @@
         descriptionEditor.setFocus(true);
     }
 
+    public void setMessage(String message) {
+        messageHTML.appendText(message);
+    }
+
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.ui.xml
index 7529521..cee58d1 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmSnapshotCreatePopupWidget.ui.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
 <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"
-       xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor">
+       xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor"
+       xmlns:l="urn:import:org.ovirt.engine.ui.common.widget.label" >
 
        <ui:style>
                .content {
@@ -20,7 +21,7 @@
 
        <g:VerticalPanel verticalAlignment="ALIGN_MIDDLE" 
addStyleNames="{style.content}">
                <e:EntityModelTextBoxEditor ui:field="descriptionEditor" 
addStyleNames="{style.descriptionEditor}" />
-               <g:Label ui:field="message" 
addStyleNames="{style.errorMessageLabel}" />
+               <l:HtmlLabel ui:field="messageHTML" 
addStyleNames="{style.errorMessageLabel}" />
        </g:VerticalPanel>
 
 </ui:UiBinder>
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
index f4c838b..b7c7464 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
@@ -762,4 +762,9 @@
     protected String extractNameFromEntity(VmTemplate entity) {
         return entity.getname();
     }
+
+    @Override
+    protected void sendWarningForNonExportableDisks(VmTemplate entity) {
+        // no op
+    }
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/VmBaseListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/VmBaseListModel.java
index 5202757..b2a340c 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/VmBaseListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/VmBaseListModel.java
@@ -64,6 +64,9 @@
                         
vmListModel.PostExportGetStorageDomainList(filteredStorageDomains);
                     }
                 }), extractStoragePoolIdNullSafe(selectedEntity));
+
+        // check, if the VM has a disk which doesn't allow snapshot
+        sendWarningForNonExportableDisks(selectedEntity);
     }
 
     private void PostExportGetStorageDomainList(List<storage_domains> 
storageDomains)
@@ -198,12 +201,14 @@
     }
 
     private String composeExistingVmsWarningMessage(List<T> existingVms) {
-        String res = ""; //$NON-NLS-1$
+        final StringBuffer s = new StringBuffer();
         for (T t : existingVms) {
-            String name = extractNameFromEntity(t);
-            res += "\u2022  " + name + " "; //$NON-NLS-1$ //$NON-NLS-2$
+            if(s.length() > 0) {
+                s.append(", "); //$NON-NLS-1$
+            }
+            s.append(extractNameFromEntity(t));
         }
-        return res;
+        return s.toString();
     }
 
     protected void setupExportModel(ExportVmModel model) {
@@ -228,4 +233,6 @@
 
     protected abstract VdcQueryType getEntityExportDomain();
 
+    protected abstract void sendWarningForNonExportableDisks(T entity);
+
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExportVmModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExportVmModel.java
index 9ae178f..e90fd85 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExportVmModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExportVmModel.java
@@ -6,10 +6,8 @@
 import org.ovirt.engine.ui.uicommonweb.validation.IValidation;
 import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation;
 
-@SuppressWarnings("unused")
 public class ExportVmModel extends Model
 {
-
     private ListModel privateStorage;
 
     public ListModel getStorage()
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
index 12ce131..cbdf3cd 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
@@ -4,6 +4,7 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
+import java.util.List;
 
 import org.ovirt.engine.core.common.businessentities.ActionGroup;
 import org.ovirt.engine.core.common.businessentities.Disk;
@@ -107,6 +108,7 @@
 
                         NewTemplateVmModelBehavior behavior = 
(NewTemplateVmModelBehavior) target;
                         ArrayList<Disk> disks = new ArrayList<Disk>();
+                        List<Disk> nonExportableDisks = new ArrayList<Disk>();
                         Iterable disksEnumerable = (Iterable) returnValue;
                         Iterator disksIterator = disksEnumerable.iterator();
 
@@ -116,11 +118,14 @@
 
                             if (disk.getDiskStorageType() == 
DiskStorageType.IMAGE && !disk.isShareable()) {
                                 disks.add(disk);
+                            } else if(!disk.isAllowSnapshot()) {
+                                nonExportableDisks.add(disk);
                             }
                         }
 
                         behavior.InitStorageDomains();
                         InitDisks(disks);
+                        sendWarningForNonExportableDisks(nonExportableDisks);
                     }
                 }, getModel().getHash()),
                 vm.getId(),
@@ -133,6 +138,23 @@
         }
     }
 
+    private void sendWarningForNonExportableDisks(List<Disk> 
nonExportableDisks) {
+        if(!nonExportableDisks.isEmpty()) {
+            final StringBuilder s = new StringBuilder();
+
+            for(Disk disk : nonExportableDisks) {
+                if(s.length() > 0) {
+                    s.append(", "); //$NON-NLS-1$
+                }
+
+                s.append(disk.getDiskAlias());
+            }
+
+            // append warning message
+            
getModel().setMessage(ConstantsManager.getInstance().getMessages().disksWillNotBePartOfTheExportedVMTemplate(s.toString()));
+        }
+    }
+
     private void InitDisks(ArrayList<Disk> disks)
     {
         Collections.sort(disks, new Linq.DiskByAliasComparer());
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SnapshotModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SnapshotModel.java
index df71d88..e6d11ba 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SnapshotModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SnapshotModel.java
@@ -5,6 +5,7 @@
 import java.util.List;
 
 import 
org.ovirt.engine.core.common.businessentities.BusinessEntitiesDefinitions;
+import org.ovirt.engine.core.common.businessentities.Disk;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.Snapshot;
 import org.ovirt.engine.core.common.businessentities.VM;
@@ -18,8 +19,8 @@
 import org.ovirt.engine.ui.uicommonweb.validation.LengthValidation;
 import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation;
 import 
org.ovirt.engine.ui.uicommonweb.validation.SpecialAsciiI18NOrNoneValidation;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
 
-@SuppressWarnings("unused")
 public class SnapshotModel extends EntityModel
 {
     private VM vm;
@@ -153,4 +154,31 @@
 
         return getDescription().getIsValid();
     }
+
+    // send warning message, if a disk which doesn't allow snapshot is 
detected (e.g. LUN)
+    void sendWarningForNonExportableDisks(ArrayList<Disk> disks) {
+        // filter non-exportable disks
+        final List<Disk> nonExportableDisks = new ArrayList<Disk>();
+        for(Disk disk : disks) {
+            if(!disk.isAllowSnapshot()) {
+                nonExportableDisks.add(disk);
+            }
+        }
+
+        if(!nonExportableDisks.isEmpty()) {
+            final StringBuilder s = new StringBuilder();
+
+            for(Disk disk : nonExportableDisks) {
+                if(s.length() > 0) {
+                    s.append(", "); //$NON-NLS-1$
+                }
+
+                s.append(disk.getDiskAlias());
+            }
+
+            // append warning message
+            
setMessage(ConstantsManager.getInstance().getMessages().disksWillNotBePartOfTheExportedVMSnapshot(s.toString()));
+        }
+    }
+
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
index af13928..c7c7224 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
@@ -1327,6 +1327,41 @@
                 }, model);
     }
 
+    @Override
+    protected void sendWarningForNonExportableDisks(VM entity) {
+        // load VM disks and check if there is one which doesn't allow snapshot
+        AsyncDataProvider.GetVmDiskList(new AsyncQuery((ExportVmModel) 
getWindow(),
+                new INewAsyncCallback() {
+                    @Override
+                    public void OnSuccess(Object target, Object returnValue) {
+                        final ExportVmModel model = (ExportVmModel) target;
+                        @SuppressWarnings("unchecked")
+                        final ArrayList<Disk> diskList = (ArrayList<Disk>) 
returnValue;
+                        final List<Disk> nonExportableDisks = new 
ArrayList<Disk>();
+                        for(Disk disk : diskList) {
+                            if(!disk.isAllowSnapshot()) {
+                                nonExportableDisks.add(disk);
+                            }
+                        }
+
+                        if(!nonExportableDisks.isEmpty()) {
+                            final StringBuilder s = new StringBuilder();
+
+                            for(Disk disk : nonExportableDisks) {
+                                if(s.length() > 0) {
+                                    s.append(", "); //$NON-NLS-1$
+                                }
+
+                                s.append(disk.getDiskAlias());
+                            }
+
+                            // append warning message
+                            
model.setMessage(ConstantsManager.getInstance().getMessages().disksWillNotBePartOfTheExportedVM(s.toString()));
+                        }
+                    }
+                }), entity.getId());
+    }
+
     private void RunOnce()
     {
         VM vm = (VM) getSelectedItem();
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
index daad8be..fe6be7d 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
@@ -483,6 +483,8 @@
                         ArrayList<Disk> disks = (ArrayList<Disk>) returnValue;
 
                         vmSnapshotListModel.PostNew(disks);
+                        // show message
+                        snapshotModel.sendWarningForNonExportableDisks(disks);
                         snapshotModel.StopProgress();
                     }
                 }),
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Messages.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Messages.java
index a602d27..5ba4294 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Messages.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Messages.java
@@ -90,12 +90,21 @@
     @DefaultMessage("Import process has begun for Template(s): {0}.\nYou can 
check import status in the ''Events'' tab of the specific destination storage 
domain, or in the main ''Events'' tab")
     String importProcessHasBegunForTemplates(String importedTemplates);
 
-    @DefaultMessage("Template(s):\n{0} already exist on the target Export 
Domain. If you want to override them, please check the ''Force Override'' 
check-box.")
+    @DefaultMessage("Template(s): {0} already exist on the target Export 
Domain. If you want to override them, please check the ''Force Override'' 
check-box.")
     String templatesAlreadyExistonTargetExportDomain(String existingTemplates);
 
-    @DefaultMessage("VM(s):\n{0} already exist on the target Export Domain. If 
you want to override them, please check the ''Force Override'' check-box.")
+    @DefaultMessage("VM(s): {0} already exist on the target Export Domain. If 
you want to override them, please check the ''Force Override'' check-box.")
     String vmsAlreadyExistOnTargetExportDomain(String existingVMs);
 
+    @DefaultMessage("Shared disk(s): {0} will not be part of the exported 
virtual machine.")
+    String disksWillNotBePartOfTheExportedVM(String diskList);
+
+    @DefaultMessage("Shared disk(s): {0} will not be part of the exported 
template.")
+    String disksWillNotBePartOfTheExportedVMTemplate(String diskList);
+
+    @DefaultMessage("Shared disk(s): {0} will not be part of the exported 
snapshot.")
+    String disksWillNotBePartOfTheExportedVMSnapshot(String diskList);
+
     @DefaultMessage("Error connecting to Virtual Machine using Spice:\n{0}")
     String errConnectingVmUsingSpiceMsg(Object errCode);
 
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmMakeTemplatePopupView.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmMakeTemplatePopupView.java
index c239f49..90548b5 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmMakeTemplatePopupView.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmMakeTemplatePopupView.java
@@ -20,7 +20,7 @@
 
     @Inject
     public VmMakeTemplatePopupView(EventBus eventBus, ApplicationResources 
resources, ApplicationConstants constants) {
-        super(eventBus, resources, new VmMakeTemplatePopupWidget(constants), 
"460px", "490px"); //$NON-NLS-1$ //$NON-NLS-2$
+        super(eventBus, resources, new VmMakeTemplatePopupWidget(constants), 
"490px", "490px"); //$NON-NLS-1$ //$NON-NLS-2$
         ViewIdHandler.idHandler.generateAndSetIds(this);
     }
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmExportPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmExportPopupView.java
index 27f7a18..b5397f1 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmExportPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmExportPopupView.java
@@ -4,6 +4,7 @@
 import org.ovirt.engine.ui.common.widget.Align;
 import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel;
 import org.ovirt.engine.ui.common.widget.editor.EntityModelCheckBoxEditor;
+import org.ovirt.engine.ui.common.widget.label.HtmlLabel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.ExportVmModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
 import org.ovirt.engine.ui.webadmin.ApplicationResources;
@@ -14,7 +15,6 @@
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.user.client.ui.Label;
 import com.google.inject.Inject;
 
 public class VmExportPopupView extends 
AbstractModelBoundPopupView<ExportVmModel>
@@ -38,7 +38,7 @@
 
     @UiField
     @Ignore
-    Label messageLabel;
+    HtmlLabel messageHTML;
 
     @Inject
     public VmExportPopupView(EventBus eventBus, ApplicationResources 
resources, ApplicationConstants constants) {
@@ -61,9 +61,7 @@
 
     @Override
     public void setMessage(String message) {
-        super.setMessage(message);
-
-        messageLabel.setText(message);
+        messageHTML.appendText(message);
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmExportPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmExportPopupView.ui.xml
index ecd36d5..0f632df 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmExportPopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmExportPopupView.ui.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
 <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"
-       xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" 
xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor">
+       xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" 
+       xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor"
+       xmlns:l="urn:import:org.ovirt.engine.ui.common.widget.label" >
 
        <ui:style>
                .messageLabel {
@@ -12,18 +14,18 @@
                }
                
                .messagePanel {
-                       height: 70px;
+                       height: 90px;
                        width: 100%;
                }
        </ui:style>
        
-       <d:SimpleDialogPanel width="400px" height="270px">
+       <d:SimpleDialogPanel width="440px" height="270px">
                <d:content>
                        <g:FlowPanel>
                                <e:EntityModelCheckBoxEditor 
ui:field="forceOverride"/>
                                <e:EntityModelCheckBoxEditor 
ui:field="collapseSnapshots"/>
                                <g:ScrollPanel 
addStyleNames="{style.messagePanel}" >
-                                       <g:Label ui:field="messageLabel" 
addStyleNames="{style.messageLabel}" />
+                                       <l:HtmlLabel ui:field="messageHTML" 
addStyleNames="{style.messageLabel}" />
                                </g:ScrollPanel>
                        </g:FlowPanel>
                </d:content>
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmMakeTemplatePopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmMakeTemplatePopupView.java
index 1d78b99..b4ca68f 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmMakeTemplatePopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmMakeTemplatePopupView.java
@@ -20,7 +20,7 @@
 
     @Inject
     public VmMakeTemplatePopupView(EventBus eventBus, ApplicationResources 
resources, ApplicationConstants constants) {
-        super(eventBus, resources, new VmMakeTemplatePopupWidget(constants), 
"460px", "490px"); //$NON-NLS-1$ //$NON-NLS-2$
+        super(eventBus, resources, new VmMakeTemplatePopupWidget(constants), 
"490px", "490px"); //$NON-NLS-1$ //$NON-NLS-2$
         ViewIdHandler.idHandler.generateAndSetIds(this);
     }
 


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6a183931e36ccd4668225ad206edc4a5e58795e3
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Libor Spevak <lspe...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to