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

Reply via email to