Xavi Francisco has uploaded a new change for review. Change subject: engine: Add custom mount options to NFS SD ......................................................................
engine: Add custom mount options to NFS SD This patch allows to set custom mount options to NFS based storage domains through the webadmin and rest interfaces. The mechanism is the same one that's implemented for PosixFS storage domain: * An extra input field is added to the connection interface for the custom mount options in the webadmin interface. * The mount_options parameter is accepted when using the rest interface. Those parameters, then, are sent with the other mount options to VDSM storage server. Change-Id: I3c7d51f5bf1ffb3491788b9fcda770a55b94cf50 Bug-Url: https://bugzilla.redhat.com/1087059 Signed-off-by: Xavi Francisco <[email protected]> --- M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java M backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/StorageDomainMapperTest.java 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/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 6 files changed, 59 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/94/27694/1 diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java index 1c3830d..af1bde5 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java @@ -85,6 +85,9 @@ entity.setNfsVersion(map(nfsVersion, null)); } } + if (storage.isSetMountOptions()) { + entity.setMountOptions(storage.getMountOptions()); + } break; case LOCALFS: if (storage.isSetPath()) { @@ -224,6 +227,9 @@ entity.setNfsVersion(map(nfsVersion, null)); } } + if (model.isSetMountOptions()) { + entity.setMountOptions(model.getMountOptions()); + } break; case LOCALFS: if (model.isSetPath()) { @@ -276,6 +282,9 @@ if (entity.getNfsTimeo() != null) { model.setNfsTimeo(entity.getNfsTimeo().intValue()); } + if (entity.getMountOptions() != null) { + model.setMountOptions(entity.getMountOptions()); + } } else if (entity.getstorage_type().equals(org.ovirt.engine.core.common.businessentities.StorageType.POSIXFS)) { model.setMountOptions(entity.getMountOptions()); diff --git a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/StorageDomainMapperTest.java b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/StorageDomainMapperTest.java index 4e55832..146e353 100644 --- a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/StorageDomainMapperTest.java +++ b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/StorageDomainMapperTest.java @@ -139,6 +139,7 @@ connection.setNfsRetrans((short) 200); connection.setNfsTimeo((short) 400); connection.setNfsVersion(org.ovirt.engine.core.common.businessentities.NfsVersion.V3); + connection.setMountOptions("tcp"); Storage RESTConnection = new Storage(); RESTConnection.setId(connId.toString()); @@ -148,6 +149,7 @@ RESTConnection.setNfsRetrans(200); RESTConnection.setNfsTimeo(400); RESTConnection.setNfsVersion(NfsVersion.V3.toString()); + RESTConnection.setMountOptions("tcp"); StorageConnection mappedResult = StorageDomainMapper.map(connection, null); assertEquals(RESTConnection.getId(), mappedResult.getId()); @@ -157,6 +159,7 @@ assertEquals(RESTConnection.getNfsRetrans(), mappedResult.getNfsRetrans()); assertEquals(RESTConnection.getNfsTimeo(), mappedResult.getNfsTimeo()); assertEquals(RESTConnection.getNfsVersion(), mappedResult.getNfsVersion()); + assertEquals(RESTConnection.getMountOptions(), mappedResult.getMountOptions()); } @Test @@ -222,6 +225,7 @@ connection.setNfsRetrans((short) 200); connection.setNfsTimeo((short) 400); connection.setNfsVersion(org.ovirt.engine.core.common.businessentities.NfsVersion.V3); + connection.setMountOptions("tcp"); StorageConnection RESTConnection = new StorageConnection(); RESTConnection.setId(connId.toString()); @@ -231,6 +235,7 @@ RESTConnection.setNfsRetrans(200); RESTConnection.setNfsTimeo(400); RESTConnection.setNfsVersion(NfsVersion.V3.toString()); + RESTConnection.setMountOptions("tcp"); StorageServerConnections mappedResult = StorageDomainMapper.map(RESTConnection, null); assertEquals(connection.getid(), mappedResult.getid()); @@ -239,6 +244,7 @@ assertEquals(connection.getNfsRetrans(), mappedResult.getNfsRetrans()); assertEquals(connection.getNfsTimeo(), mappedResult.getNfsTimeo()); assertEquals(connection.getNfsVersion(), mappedResult.getNfsVersion()); + assertEquals(connection.getMountOptions(), mappedResult.getMountOptions()); } @Test 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 e02887c..3556ff5 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 @@ -132,6 +132,15 @@ timeout = value; } + private EntityModel<String> mountOptions; + + public EntityModel<String> getMountOptions() { + return mountOptions; + } + + private void setMountOptions(EntityModel<String> value) { + mountOptions = value; + } static { @@ -161,6 +170,7 @@ setRetransmissions(new EntityModel<Short>()); setTimeout(new EntityModel<Short>()); + setMountOptions(new EntityModel<String>()); setOverride(new EntityModel<Boolean>()); getOverride().getEntityChangedEvent().addListener(this); @@ -175,6 +185,7 @@ getVersion().setIsChangable(isChangeable); getRetransmissions().setIsChangable(isChangeable); getTimeout().setIsChangable(isChangeable); + getMountOptions().setIsChangable(isChangeable); } @Override @@ -205,9 +216,13 @@ new IntegerValidation(1, TIMEOUT_MAX) }); + getMountOptions().validateEntity(new IValidation[] { + new NonUtfValidation() + }); + return getPath().getIsValid() && getRetransmissions().getIsValid() - && getTimeout().getIsValid(); + && getTimeout().getIsValid() && getMountOptions().getIsValid(); } @Override @@ -247,5 +262,6 @@ getVersion().setIsAvailable(available); getRetransmissions().setIsAvailable(available); getTimeout().setIsAvailable(available); + getMountOptions().setIsAvailable(available); } } 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 ce14753..51a92b5 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 @@ -421,7 +421,7 @@ model.getPath().setEntity(connection.getconnection()); model.getRetransmissions().setEntity(connection.getNfsRetrans()); model.getTimeout().setEntity(connection.getNfsTimeo()); - + model.getMountOptions().setEntity(connection.getMountOptions()); for (EntityModel<NfsVersion> item : model.getVersion().getItems()) { EntityModel itemModel = (EntityModel) item; boolean noNfsVersion = itemModel.getEntity() == null && connection.getNfsVersion() == null; @@ -438,7 +438,8 @@ model.getOverride().setEntity( connection.getNfsVersion() != null || connection.getNfsRetrans() != null || - connection.getNfsTimeo() != null); + connection.getNfsTimeo() != null || + connection.getMountOptions() != null); } }), storage.getStorage(), true); @@ -1521,6 +1522,7 @@ connection.setNfsVersion((NfsVersion) ((EntityModel) nfsModel.getVersion().getSelectedItem()).getEntity()); connection.setNfsRetrans(nfsModel.getRetransmissions().asConvertible().nullableShort()); connection.setNfsTimeo(nfsModel.getTimeout().asConvertible().nullableShort()); + connection.setMountOptions(nfsModel.getMountOptions().getEntity()); } } @@ -1529,7 +1531,7 @@ PosixStorageModel posixModel = (PosixStorageModel) storageModel; connection.setVfsType(posixModel.getVfsType().getEntity().toString()); if (posixModel.getMountOptions().getEntity() != null) { - connection.setMountOptions(posixModel.getMountOptions().getEntity().toString()); + connection.setMountOptions(posixModel.getMountOptions().getEntity()); } } @@ -1549,6 +1551,7 @@ tempVar.setNfsVersion((NfsVersion) ((EntityModel) nfsModel.getVersion().getSelectedItem()).getEntity()); tempVar.setNfsRetrans(nfsModel.getRetransmissions().asConvertible().nullableShort()); tempVar.setNfsTimeo(nfsModel.getTimeout().asConvertible().nullableShort()); + tempVar.setMountOptions((String) nfsModel.getMountOptions().getEntity()); } connection = tempVar; 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 2b0916d..4f2db00 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 @@ -113,6 +113,15 @@ Label timeoutLabel; @UiField + @WithElementId + @Path(value = "mountOptions.entity") + StringEntityModelTextBoxOnlyEditor mountOptionsEditor; + + @UiField + @Ignore + Label mountOptionsLabel; + + @UiField Label message; private final Driver driver = GWT.create(Driver.class); @@ -164,6 +173,7 @@ versionLabel.setText(constants.storagePopupNfsVersionLabel()); retransmissionsLabel.setText(constants.storagePopupNfsRetransmissionsLabel()); timeoutLabel.setText(constants.storagePopupNfsTimeoutLabel()); + mountOptionsLabel.setText(constants.storagePopupMountOptionsLabel()); } @Override @@ -179,17 +189,19 @@ styleTextBoxEditor(timeoutEditor, object.getOverride().getIsChangable()); styleTextBoxEditor(retransmissionsEditor, object.getOverride().getIsChangable()); styleTextBoxEditor(versionReadOnlyEditor, object.getOverride().getIsChangable()); + styleTextBoxEditor(mountOptionsEditor, object.getOverride().getIsChangable()); setElementVisibility(versionEditor, object.getOverride().getIsChangable()); setElementVisibility(versionReadOnlyEditor, !object.getOverride().getIsChangable()); setElementVisibility(versionLabel, object.getVersion().getIsAvailable()); setElementVisibility(retransmissionsLabel, object.getRetransmissions().getIsAvailable()); setElementVisibility(timeoutLabel, object.getTimeout().getIsAvailable()); + setElementVisibility(mountOptionsLabel, object.getMountOptions().getIsAvailable()); // When all advanced fields are unavailable - hide the expander. boolean anyField = object.getVersion().getIsAvailable() || object.getRetransmissions().getIsAvailable() - || object.getTimeout().getIsAvailable(); + || object.getTimeout().getIsAvailable() || object.getMountOptions().getIsAvailable(); expander.getElement().getStyle().setVisibility(anyField ? Style.Visibility.VISIBLE : Style.Visibility.HIDDEN); } 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 d353e7e..ec4fb41 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 @@ -104,6 +104,14 @@ <ge:ShortEntityModelTextBoxOnlyEditor ui:field="timeoutEditor" addStyleNames="table_contentWidget_pfly_fix"/> </td> </tr> + <tr> + <td nowrap="nowrap"> + <g:Label ui:field="mountOptionsLabel" addStyleNames="{style.label}"/> + </td> + <td> + <ge:StringEntityModelTextBoxOnlyEditor ui:field="mountOptionsEditor" addStyleNames="table_contentWidget_pfly_fix"/> + </td> + </tr> </table> </table> </g:HTMLPanel> -- To view, visit http://gerrit.ovirt.org/27694 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3c7d51f5bf1ffb3491788b9fcda770a55b94cf50 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Xavi Francisco <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
