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