Greg Padgett has uploaded a new change for review.

Change subject: webadmin: Add checkbox to override NFS mount options
......................................................................

webadmin: Add checkbox to override NFS mount options

With the change to make nfs v3 the default, mounting any nfs domain with
compatibility version 3.1+ will result in the engine sending a mount
version to vdsm.

This provides a way to specify that no options should be specified,
which results in the values being null in the db and not sent to vdsm
when connecting the storage.  This allows vdsm.conf's nfs_mount_options
to be processed properly as well (bug 826921).

Change-Id: If01d7fefc392fd296838df5da9faa9b4157327cf
Bug-Url: https://bugzilla.redhat.com/855729
Signed-off-by: Greg Padgett <gpadg...@redhat.com>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/NfsStorageModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/NfsStorageView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/NfsStorageView.ui.xml
5 files changed, 88 insertions(+), 19 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/98/8798/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/NfsStorageModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/NfsStorageModel.java
index 9831eb6..d99829d 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/NfsStorageModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/NfsStorageModel.java
@@ -92,6 +92,16 @@
         path = value;
     }
 
+    private EntityModel override;
+
+    public EntityModel getOverride() {
+        return override;
+    }
+
+    private void setOverride(EntityModel value) {
+        override = value;
+    }
+
     private ListModel version;
 
     public ListModel getVersion() {
@@ -120,6 +130,22 @@
 
     private void setTimeout(EntityModel value) {
         timeout = value;
+    }
+
+    private boolean isEditMode;
+
+    public void setIsEditMode(boolean isEditMode) {
+        boolean isChangable = !isEditMode && (Boolean) 
getOverride().getEntity();
+        getPath().setIsChangable(isChangable);
+        getOverride().setIsChangable(isChangable);
+        getVersion().setIsChangable(isChangable);
+        getRetransmissions().setIsChangable(isChangable);
+        getTimeout().setIsChangable(isChangable);
+        this.isEditMode = isEditMode;
+    }
+
+    public boolean getIsEditMode() {
+        return isEditMode;
     }
 
 
@@ -151,6 +177,22 @@
 
         setRetransmissions(new EntityModel());
         setTimeout(new EntityModel());
+
+        setOverride(new EntityModel());
+        getOverride().getEntityChangedEvent().addListener(this);
+        getOverride().setEntity(false);
+
+    }
+
+    private void Override_EntityChanged(EventArgs e) {
+        // Advanced options are editable only if override checkbox is enabled
+        // and the dialog is not editing existing nfs storage.
+        if (!getIsEditMode()) {
+            boolean isChangable = (Boolean) getOverride().getEntity();
+            getVersion().setIsChangable(isChangable);
+            getRetransmissions().setIsChangable(isChangable);
+            getTimeout().setIsChangable(isChangable);
+        }
     }
 
     @Override
@@ -160,11 +202,13 @@
             // Notify about path change.
             getPathChangedEvent().raise(this, EventArgs.Empty);
         }
+        else if (ev.equals(EntityModel.EntityChangedEventDefinition) && sender 
== getOverride()) {
+            Override_EntityChanged(args);
+        }
     }
 
     @Override
     public boolean Validate() {
-
         getPath().ValidateEntity(new IValidation[] {
             new NotEmptyValidation(),
             new LinuxMountPointValidation(),
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
index 28e1d64..f192a4a 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
@@ -422,10 +422,7 @@
     {
         final NfsStorageModel model = new NfsStorageModel();
         model.setRole(storage.getstorage_domain_type());
-        model.getPath().setIsChangable(false);
-        model.getVersion().setIsChangable(false);
-        model.getRetransmissions().setIsChangable(false);
-        model.getTimeout().setIsChangable(false);
+        model.setIsEditMode(true);
 
         AsyncDataProvider.GetStorageConnectionById(new AsyncQuery(null, new 
INewAsyncCallback() {
             @Override
@@ -448,6 +445,12 @@
                         break;
                     }
                 }
+
+                // If any settings were overridden, reflect this in the 
override checkbox
+                model.getOverride().setEntity(
+                        connection.getNfsVersion() != null ||
+                        connection.getNfsRetrans() != null ||
+                        connection.getNfsTimeo() != null);
 
             }
         }), storage.getstorage(), true);
@@ -1331,9 +1334,11 @@
         storage_server_connections tempVar = new storage_server_connections();
         tempVar.setconnection(path);
         tempVar.setstorage_type(nfsModel.getType());
-        tempVar.setNfsVersion((NfsVersion) ((EntityModel) 
nfsModel.getVersion().getSelectedItem()).getEntity());
-        
tempVar.setNfsRetrans(nfsModel.getRetransmissions().AsConvertible().nullableShort());
-        
tempVar.setNfsTimeo(nfsModel.getTimeout().AsConvertible().nullableShort());
+        if ((Boolean) nfsModel.getOverride().getEntity()) {
+            tempVar.setNfsVersion((NfsVersion) ((EntityModel) 
nfsModel.getVersion().getSelectedItem()).getEntity());
+            
tempVar.setNfsRetrans(nfsModel.getRetransmissions().AsConvertible().nullableShort());
+            
tempVar.setNfsTimeo(nfsModel.getTimeout().AsConvertible().nullableShort());
+        }
         connection = tempVar;
 
         ArrayList<VdcActionType> actionTypes = new ArrayList<VdcActionType>();
@@ -1728,9 +1733,11 @@
 
                     tempVar.setconnection(storageListModel.path);
                     tempVar.setstorage_type(StorageType.NFS);
-                    tempVar.setNfsVersion((NfsVersion) ((EntityModel) 
nfsModel.getVersion().getSelectedItem()).getEntity());
-                    
tempVar.setNfsRetrans(nfsModel.getRetransmissions().AsConvertible().nullableShort());
-                    
tempVar.setNfsTimeo(nfsModel.getTimeout().AsConvertible().nullableShort());
+                    if ((Boolean) nfsModel.getOverride().getEntity()) {
+                        tempVar.setNfsVersion((NfsVersion) ((EntityModel) 
nfsModel.getVersion().getSelectedItem()).getEntity());
+                        
tempVar.setNfsRetrans(nfsModel.getRetransmissions().AsConvertible().nullableShort());
+                        
tempVar.setNfsTimeo(nfsModel.getTimeout().AsConvertible().nullableShort());
+                    }
                     storageListModel.nfsConnection = tempVar;
                     storageListModel.ImportNfsStorageConnect();
                 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
index e01e364..c9ba0fc 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
@@ -226,6 +226,9 @@
     @DefaultStringValue("Export Path")
     String storagePopupNfsPathLabel();
 
+    @DefaultStringValue("Override Default Options")
+    String storagePopupNfsOverrideLabel();
+
     @DefaultStringValue("NFS Version")
     String storagePopupNfsVersionLabel();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/NfsStorageView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/NfsStorageView.java
index 8bcdc86..7780e41 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/NfsStorageView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/NfsStorageView.java
@@ -5,7 +5,9 @@
 import org.ovirt.engine.ui.common.CommonApplicationTemplates;
 import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
 import org.ovirt.engine.ui.common.idhandler.WithElementId;
+import org.ovirt.engine.ui.common.widget.Align;
 import org.ovirt.engine.ui.common.widget.dialog.AdvancedParametersExpander;
+import org.ovirt.engine.ui.common.widget.editor.EntityModelCheckBoxEditor;
 import org.ovirt.engine.ui.common.widget.editor.EntityModelTextBoxOnlyEditor;
 import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxOnlyEditor;
 import org.ovirt.engine.ui.common.widget.uicommon.storage.AbstractStorageView;
@@ -18,6 +20,7 @@
 import com.google.gwt.dom.client.Style;
 import com.google.gwt.dom.client.TableElement;
 import com.google.gwt.editor.client.SimpleBeanEditorDriver;
+import com.google.gwt.editor.client.Editor.Path;
 import com.google.gwt.resources.client.CssResource;
 import com.google.gwt.text.shared.AbstractRenderer;
 import com.google.gwt.uibinder.client.UiBinder;
@@ -67,6 +70,11 @@
     @UiField
     @Ignore
     Label warningLabel;
+
+    @UiField(provided = true)
+    @Path(value = "override.entity")
+    @WithElementId("overrideEditor")
+    EntityModelCheckBoxEditor overrideEditor;
 
     @UiField
     @Ignore
@@ -142,6 +150,8 @@
                 return model.getTitle();
             }
         });
+
+        overrideEditor = new EntityModelCheckBoxEditor(Align.RIGHT);
     }
 
     void localize(ApplicationConstants constants) {
@@ -149,6 +159,7 @@
         pathLabel.setText(constants.storagePopupNfsPathLabel());
         pathHintLabel.setText(constants.storagePopupNfsPathHintLabel());
         warningLabel.setText(constants.advancedOptionsLabel());
+        overrideEditor.setLabel(constants.storagePopupNfsOverrideLabel());
         versionLabel.setText(constants.storagePopupNfsVersionLabel());
         
retransmissionsLabel.setText(constants.storagePopupNfsRetransmissionsLabel());
         timeoutLabel.setText(constants.storagePopupNfsTimeoutLabel());
@@ -161,19 +172,18 @@
         EntityModel version = (EntityModel) 
object.getVersion().getSelectedItem();
         versionReadOnlyEditor.asValueBox().setValue(version != null ? 
version.getTitle() : null);
 
-        pathHintLabel.setVisible(object.getPath().getIsAvailable() && 
object.getPath().getIsChangable());
+        pathHintLabel.setVisible(object.getPath().getIsAvailable() && 
!object.getIsEditMode());
 
-        styleTextBoxEditor(pathEditor, object.getPath().getIsChangable());
-        styleTextBoxEditor(timeoutEditor, 
object.getTimeout().getIsChangable());
-        styleTextBoxEditor(retransmissionsEditor, 
object.getRetransmissions().getIsChangable());
-        styleTextBoxEditor(versionReadOnlyEditor, 
object.getVersion().getIsChangable());
+        styleTextBoxEditor(pathEditor, !object.getIsEditMode());
+        styleTextBoxEditor(timeoutEditor, !object.getIsEditMode());
+        styleTextBoxEditor(retransmissionsEditor, !object.getIsEditMode());
+        styleTextBoxEditor(versionReadOnlyEditor, !object.getIsEditMode());
 
-        setElementVisibility(versionEditor, 
object.getVersion().getIsChangable() && object.getVersion().getIsAvailable());
-        setElementVisibility(versionReadOnlyEditor, 
!object.getVersion().getIsChangable() || !object.getVersion().getIsAvailable());
+        setElementVisibility(versionEditor, !object.getIsEditMode() && 
object.getVersion().getIsAvailable());
+        setElementVisibility(versionReadOnlyEditor, object.getIsEditMode() || 
!object.getVersion().getIsAvailable());
         setElementVisibility(versionLabel, 
object.getVersion().getIsAvailable());
         setElementVisibility(retransmissionsLabel, 
object.getRetransmissions().getIsAvailable());
         setElementVisibility(timeoutLabel, 
object.getTimeout().getIsAvailable());
-
 
         // When all advanced fields are unavailable - hide the expander.
         boolean anyField = object.getVersion().getIsAvailable()
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/NfsStorageView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/NfsStorageView.ui.xml
index b6bbc97..13fc313 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/NfsStorageView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/NfsStorageView.ui.xml
@@ -73,6 +73,11 @@
                         </td>
                     </tr>
                     <tr>
+                        <td colspan="2">
+                            <e:EntityModelCheckBoxEditor 
ui:field="overrideEditor" addStyleNames="{style.label}"/>
+                        </td>
+                    </tr>
+                    <tr>
                         <td nowrap="nowrap">
                             <g:Label ui:field="versionLabel" 
addStyleNames="{style.label}"/>
                         </td>


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

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

Reply via email to