Alissa Bonas has uploaded a new change for review.

Change subject: webadmin,core: WIP edit Posix storage connection
......................................................................

webadmin,core: WIP edit Posix storage connection

please don't review yet

Change-Id: I8904ffab80e9d6e6bfdee4b8375872d1ff64b4d4
Signed-off-by: Alissa Bonas <abo...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommand.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommandTest.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
7 files changed, 172 insertions(+), 75 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/40/13640/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommand.java
index 05b3043..cfa014d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommand.java
@@ -49,16 +49,19 @@
     protected boolean canDoAction() {
         StorageServerConnections newConnectionDetails = 
getParameters().getStorageServerConnection();
 
-        if (newConnectionDetails.getstorage_type() != StorageType.NFS) {
+        if (newConnectionDetails.getstorage_type() != StorageType.NFS && 
newConnectionDetails.getstorage_type() != StorageType.POSIXFS) {
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_CONNECTION_UNSUPPORTED_ACTION_FOR_STORAGE);
         }
 
-        // todo change it to use annotation - in future patch
         // Check if the NFS path has a valid format
-        if (!new 
NfsMountPointConstraint().isValid(newConnectionDetails.getconnection(), null)) {
+        if (newConnectionDetails.getstorage_type() == StorageType.NFS &&  !new 
NfsMountPointConstraint().isValid(newConnectionDetails.getconnection(), null)) {
             return 
failCanDoAction(VdcBllMessages.VALIDATION_STORAGE_CONNECTION_INVALID);
         }
 
+        if (newConnectionDetails.getstorage_type() == StorageType.POSIXFS && 
(newConnectionDetails.getVfsType() == null || 
newConnectionDetails.getVfsType().isEmpty())) {
+            return 
failCanDoAction(VdcBllMessages.VALIDATION_STORAGE_CONNECTION_EMPTY_VFSTYPE);
+        }
+
         Guid vdsmId = getParameters().getVdsId();
         if (vdsmId == null || vdsmId.equals(Guid.Empty)) {
             return failCanDoAction(VdcBllMessages.VDS_EMPTY_NAME_OR_ID);
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommandTest.java
index 6edb0a6..745c473 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommandTest.java
@@ -43,8 +43,10 @@
 
     private 
UpdateStorageServerConnectionCommand<StorageServerConnectionParametersBase> 
command = null;
 
-    private StorageServerConnections newConnection = null;
-    private StorageServerConnections oldConnection = null;
+    private StorageServerConnections newNFSConnection = null;
+    private StorageServerConnections newPosixConnection = null;
+    private StorageServerConnections oldNFSConnection = null;
+    private StorageServerConnections oldPosixConnection = null;
 
     @Mock
     private StorageServerConnectionDAO storageConnDao;
@@ -55,56 +57,87 @@
     @Mock
     private StoragePoolIsoMapDAO storagePoolIsoMapDAO;
 
+    private StorageServerConnectionParametersBase parameters;
+
     @Before
     public void prepareParams() {
         Guid id = Guid.NewGuid();
-        newConnection =
-                createConnection(id,
+        Guid id2 = Guid.NewGuid();
+        newNFSConnection =
+                createNFSConnection(id,
                         
"multipass.my.domain.tlv.company.com:/export/allstorage/data2",
                         StorageType.NFS,
                         NfsVersion.V4,
                         300,
                         0);
 
-        StorageServerConnectionParametersBase parameters = new 
StorageServerConnectionParametersBase();
-        parameters.setStorageServerConnection(newConnection);
-        parameters.setVdsId(Guid.NewGuid());
-        parameters.setStoragePoolId(Guid.NewGuid());
-        command = spy(new 
UpdateStorageServerConnectionCommand<StorageServerConnectionParametersBase>(parameters));
-        doReturn(storageConnDao).when(command).getStorageConnDao();
-        
doReturn(storageDomainDynamicDao).when(command).getStorageDomainDynamicDao();
-        doReturn(storagePoolIsoMapDAO).when(command).getStoragePoolIsoMapDao();
+        newPosixConnection = 
createPosixConnection(id2,"multipass.my.domain.tlv.company.com:/export/allstorage/data1",
 StorageType.POSIXFS, "nfs" , "timeo=30");
 
-        oldConnection =
-                createConnection(id,
+        oldNFSConnection =
+                createNFSConnection(id,
                         
"multipass.my.domain.tlv.company.com:/export/allstorage/data1",
                         StorageType.NFS,
                         NfsVersion.V4,
                         50,
                         0);
-        
when(storageConnDao.get(newConnection.getid())).thenReturn(oldConnection);
+
+        oldPosixConnection =
+                createPosixConnection(id,
+                        
"multipass.my.domain.tlv.company.com:/export/allstorage/data1",
+                        StorageType.POSIXFS,
+                        "nfs",
+                        "timeo=30");
+
+        prepareCommand(newNFSConnection);
     }
 
-    private StorageServerConnections createConnection(Guid id,
-            String connection,
-            StorageType type,
-            NfsVersion version,
-            int timeout,
-            int retrans) {
+    private void prepareCommand(StorageServerConnections connection) {
+       parameters = new StorageServerConnectionParametersBase();
+       parameters.setStorageServerConnection(connection);
+       parameters.setVdsId(Guid.NewGuid());
+       parameters.setStoragePoolId(Guid.NewGuid());
+
+       command = spy(new 
UpdateStorageServerConnectionCommand<StorageServerConnectionParametersBase>(parameters));
+       doReturn(storageConnDao).when(command).getStorageConnDao();
+       
doReturn(storageDomainDynamicDao).when(command).getStorageDomainDynamicDao();
+       doReturn(storagePoolIsoMapDAO).when(command).getStoragePoolIsoMapDao();
+       
when(storageConnDao.get(newNFSConnection.getid())).thenReturn(oldNFSConnection);
+       
when(storageConnDao.get(newPosixConnection.getid())).thenReturn(oldPosixConnection);
+
+    }
+
+    private StorageServerConnections createNFSConnection(Guid id,
+                                                         String connection,
+                                                         StorageType type,
+                                                         NfsVersion version,
+                                                         int timeout,
+                                                         int retrans) {
+        StorageServerConnections connectionDetails = 
populateBasicConnectionDetails(id, connection, type);
+        connectionDetails.setNfsVersion(version);
+        connectionDetails.setNfsTimeo((short) timeout);
+        connectionDetails.setNfsRetrans((short) retrans);
+        return connectionDetails;
+    }
+
+    private StorageServerConnections createPosixConnection(Guid id, String 
connection, StorageType type, String vfsType, String mountOptions) {
+        StorageServerConnections connectionDetails = 
populateBasicConnectionDetails(id, connection, type);
+        connectionDetails.setVfsType(vfsType);
+        connectionDetails.setMountOptions(mountOptions);
+        return connectionDetails;
+    }
+
+    private StorageServerConnections populateBasicConnectionDetails(Guid id, 
String connection, StorageType type) {
         StorageServerConnections connectionDetails = new 
StorageServerConnections();
         connectionDetails.setid(id.toString());
         connectionDetails.setconnection(connection);
-        connectionDetails.setNfsVersion(version);
-        connectionDetails.setNfsTimeo((short) timeout);
         connectionDetails.setstorage_type(type);
-        connectionDetails.setNfsRetrans((short) retrans);
         return connectionDetails;
     }
 
     @Test
     public void checkNoHost() {
         StorageServerConnectionParametersBase parameters = new 
StorageServerConnectionParametersBase();
-        parameters.setStorageServerConnection(newConnection);
+        parameters.setStorageServerConnection(newNFSConnection);
         parameters.setVdsId(null);
         parameters.setStoragePoolId(Guid.NewGuid());
         UpdateStorageServerConnectionCommand command =
@@ -115,7 +148,7 @@
     @Test
     public void checkEmptyIdHost() {
         StorageServerConnectionParametersBase parameters = new 
StorageServerConnectionParametersBase();
-        parameters.setStorageServerConnection(newConnection);
+        parameters.setStorageServerConnection(newNFSConnection);
         parameters.setVdsId(Guid.Empty);
         parameters.setStoragePoolId(Guid.NewGuid());
         UpdateStorageServerConnectionCommand command =
@@ -124,45 +157,54 @@
     }
 
     @Test
-    public void updateNonNFSConnection() {
-        newConnection.setstorage_type(StorageType.ISCSI);
+    public void updateIScsiConnection() {
+        newNFSConnection.setstorage_type(StorageType.ISCSI);
         CanDoActionTestUtils.runAndAssertCanDoActionFailure(command,
                 
VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_CONNECTION_UNSUPPORTED_ACTION_FOR_STORAGE);
     }
 
     @Test
     public void updateChangeConnectionType() {
-        oldConnection.setstorage_type(StorageType.ISCSI);
+        oldNFSConnection.setstorage_type(StorageType.ISCSI);
         CanDoActionTestUtils.runAndAssertCanDoActionFailure(command,
                 
VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_CONNECTION_UNSUPPORTED_CHANGE_STORAGE_TYPE);
     }
 
     @Test
     public void updateNonExistingConnection() {
-        when(storageConnDao.get(newConnection.getid())).thenReturn(null);
+        when(storageConnDao.get(newNFSConnection.getid())).thenReturn(null);
         CanDoActionTestUtils.runAndAssertCanDoActionFailure(command,
                 
VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_CONNECTION_NOT_EXIST);
     }
 
     @Test
     public void updateBadFormatPath() {
-        newConnection.setconnection("host/mydir");
+        newNFSConnection.setconnection("host/mydir");
         CanDoActionTestUtils.runAndAssertCanDoActionFailure(command,
                 VdcBllMessages.VALIDATION_STORAGE_CONNECTION_INVALID);
+    }
+
+
+    @Test
+    public void updatePosixEmptyVFSType() {
+        newPosixConnection.setVfsType(null);
+        parameters.setStorageServerConnection(newPosixConnection);
+        CanDoActionTestUtils.runAndAssertCanDoActionFailure(command,
+                VdcBllMessages.VALIDATION_STORAGE_CONNECTION_EMPTY_VFSTYPE);
     }
 
     @Test
     public void updateSeveralConnectionsWithSamePath() {
         List<StorageServerConnections> connections = new 
ArrayList<StorageServerConnections>();
         StorageServerConnections conn1 = new StorageServerConnections();
-        conn1.setconnection(newConnection.getconnection());
-        conn1.setid(newConnection.getid());
+        conn1.setconnection(newNFSConnection.getconnection());
+        conn1.setid(newNFSConnection.getid());
         StorageServerConnections conn2 = new StorageServerConnections();
-        conn2.setconnection(newConnection.getconnection());
+        conn2.setconnection(newNFSConnection.getconnection());
         conn2.setid(Guid.NewGuid().toString());
         connections.add(conn1);
         connections.add(conn2);
-        
when(storageConnDao.getAllForStorage(newConnection.getconnection())).thenReturn(connections);
+        
when(storageConnDao.getAllForStorage(newNFSConnection.getconnection())).thenReturn(connections);
         CanDoActionTestUtils.runAndAssertCanDoActionFailure(command,
                 
VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_CONNECTION_ALREADY_EXISTS);
     }
@@ -171,16 +213,16 @@
     public void updateConnectionOfSeveralDomains() {
         List<StorageDomain> domains = new ArrayList<StorageDomain>();
         StorageDomain domain1 = new StorageDomain();
-        domain1.setStorage(newConnection.getconnection());
+        domain1.setStorage(newNFSConnection.getconnection());
         domain1.setStatus(StorageDomainStatus.Active);
         domain1.setStorageName("domain1");
         StorageDomain domain2 = new StorageDomain();
-        domain2.setStorage(newConnection.getconnection());
+        domain2.setStorage(newNFSConnection.getconnection());
         domain2.setStatus(StorageDomainStatus.Maintenance);
         domain2.setStorageName("domain2");
         domains.add(domain1);
         domains.add(domain2);
-        
doReturn(domains).when(command).getStorageDomainsByConnId(newConnection.getid());
+        
doReturn(domains).when(command).getStorageDomainsByConnId(newNFSConnection.getid());
         List<String> messages =
                 CanDoActionTestUtils.runAndAssertCanDoActionFailure(command,
                         
VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_CONNECTION_BELONGS_TO_SEVERAL_STORAGE_DOMAINS);
@@ -191,10 +233,10 @@
     public void updateConnectionOfActiveDomain() {
         List<StorageDomain> domains = new ArrayList<StorageDomain>();
         StorageDomain domain1 = new StorageDomain();
-        domain1.setStorage(newConnection.getconnection());
+        domain1.setStorage(newNFSConnection.getconnection());
         domain1.setStatus(StorageDomainStatus.Active);
         domains.add(domain1);
-        
doReturn(domains).when(command).getStorageDomainsByConnId(newConnection.getid());
+        
doReturn(domains).when(command).getStorageDomainsByConnId(newNFSConnection.getid());
         CanDoActionTestUtils.runAndAssertCanDoActionFailure(command,
                 
VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_CONNECTION_UNSUPPORTED_ACTION_FOR_STORAGE);
     }
@@ -202,24 +244,36 @@
     @Test
     public void updateConnectionNoDomain() {
         List<StorageDomain> domains = new ArrayList<StorageDomain>();
-        
doReturn(domains).when(command).getStorageDomainsByConnId(newConnection.getid());
+        
doReturn(domains).when(command).getStorageDomainsByConnId(newNFSConnection.getid());
         CanDoActionTestUtils.runAndAssertCanDoActionFailure(command,
                 VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_NOT_EXIST);
     }
 
     @Test
-    public void succeedCanDoAction() {
+    public void succeedCanDoActionNFS() {
         List<StorageDomain> domains = new ArrayList<StorageDomain>();
         StorageDomain domain1 = new StorageDomain();
-        domain1.setStorage(newConnection.getconnection());
+        domain1.setStorage(newNFSConnection.getconnection());
         domain1.setStatus(StorageDomainStatus.Maintenance);
         domains.add(domain1);
-        
doReturn(domains).when(command).getStorageDomainsByConnId(newConnection.getid());
+        
doReturn(domains).when(command).getStorageDomainsByConnId(newNFSConnection.getid());
         CanDoActionTestUtils.runAndAssertCanDoActionSuccess(command);
     }
 
     @Test
-    public void succeedUpdateCommand() {
+    public void succeedCanDoActionPosix() {
+        List<StorageDomain> domains = new ArrayList<StorageDomain>();
+        StorageDomain domain1 = new StorageDomain();
+        domain1.setStorage(newPosixConnection.getconnection());
+        domain1.setStatus(StorageDomainStatus.Maintenance);
+        domains.add(domain1);
+        parameters.setStorageServerConnection(newPosixConnection);
+        
doReturn(domains).when(command).getStorageDomainsByConnId(newPosixConnection.getid());
+        CanDoActionTestUtils.runAndAssertCanDoActionSuccess(command);
+    }
+
+    @Test
+    public void succeedUpdateNFSCommand() {
         VDSReturnValue returnValueConnectSuccess = new VDSReturnValue();
         StoragePoolIsoMap map = new StoragePoolIsoMap();
         doReturn(map).when(command).getStoragePoolIsoMap();
@@ -230,7 +284,7 @@
         returnValueConnectSuccess.setReturnValue(domain);
         doReturn(returnValueConnectSuccess).when(command).getStatsForDomain();
         doReturn(true).when(command).connectToStorage();
-        doNothing().when(storageConnDao).update(newConnection);
+        doNothing().when(storageConnDao).update(newNFSConnection);
         doNothing().when(storageDomainDynamicDao).update(domainDynamic);
         doNothing().when(command).changeStorageDomainStatusInTransaction(map, 
StorageDomainStatus.Locked);
         doNothing().when(command).changeStorageDomainStatusInTransaction(map, 
StorageDomainStatus.Maintenance);
@@ -254,7 +308,7 @@
         command.executeCommand();
         CommandAssertUtils.checkSucceeded(command, false);
         verify(storageDomainDynamicDao, never()).update(domainDynamic);
-        verify(storageConnDao, never()).update(newConnection);
+        verify(storageConnDao, never()).update(newNFSConnection);
     }
 
     @Test
@@ -271,7 +325,7 @@
         CommandAssertUtils.checkSucceeded(command, false);
         StorageDomainDynamic domainDynamic = new StorageDomainDynamic();
         verify(storageDomainDynamicDao, never()).update(domainDynamic);
-        verify(storageConnDao, never()).update(newConnection);
+        verify(storageConnDao, never()).update(newNFSConnection);
     }
 
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
index f9113fb..39c85c5 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java
@@ -666,6 +666,7 @@
     ACTION_TYPE_FAILED_SOURCE_AND_TARGET_SAME,
     NON_VM_NETWORK_NOT_SUPPORTED_FOR_POOL_LEVEL,
     VALIDATION_STORAGE_CONNECTION_INVALID,
+    VALIDATION_STORAGE_CONNECTION_EMPTY_VFSTYPE,
 
     // Gluster Messages
     ACTION_TYPE_FAILED_CLUSTER_IS_NOT_VALID,
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
index 8d77404..f55b601 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -578,6 +578,7 @@
 NETWORK_ILEGAL_NETWORK_NAME=Network name must be 1-15 long and can contain 
only 'A-Z', 'a-z', '0-9', '_' characters
 STORAGE_OPERATION_FAILED_SPM_NETWORK_PROBLEMS=Storage related operations can't 
be performed while the Storage Pool Manager is down.\nPlease make sure the 
Storage Pool Manager is up and running, and check network connectivity.
 VALIDATION_STORAGE_CONNECTION_INVALID=Mount path is illegal, please use 
[IP:/path or FQDN:/path] convention.
+VALIDATION_STORAGE_CONNECTION_EMPTY_VFSTYPE = VFS type cannot be empty.
 VALIDATION.TAGS.INVALID_TAG_NAME=Invalid tag name. Only alphanumeric chars, 
'-' and '_' characters are valid
 VALIDATION.VM_POOLS.NAME.NOT_NULL=Pool name is required
 VALIDATION.ROLES.NAME.NOT_NULL=Role name is required
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 042a5c1..a5e99ee 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
@@ -373,7 +373,7 @@
         switch (storage.getStorageType()) {
             case NFS:
                 item = prepareNfsStorageForEdit(storage);
-                boolean isNfsPathEditable = isNfsPathEditable(storage);
+                boolean isNfsPathEditable = isPathEditable(storage);
                 isStorageEditable = isStorageEditable || isNfsPathEditable;
                 //when storage is active, only SPM can perform actions on it, 
thus it is set above that host is not changeable.
                 //If storage is editable but not active (maintenance) - any 
host can perform the edit so the changeable here is set based on that
@@ -394,6 +394,11 @@
 
             case POSIXFS:
                 item = preparePosixStorageForEdit(storage);
+                boolean isPathEditable = isPathEditable(storage);
+                isStorageEditable = isStorageEditable || isPathEditable;
+                //when storage is active, only SPM can perform actions on it, 
thus it is set above that host is not changeable.
+                //If storage is editable but not active (maintenance) - any 
host can perform the edit so the changeable here is set based on that
+                model.getHost().setIsChangable(isPathEditable);
                 break;
 
             case GLUSTERFS:
@@ -444,7 +449,7 @@
         final NfsStorageModel model = new NfsStorageModel();
         model.setRole(storage.getStorageDomainType());
 
-        boolean isNfsPathEditable = isNfsPathEditable(storage);
+        boolean isNfsPathEditable = isPathEditable(storage);
 
         model.getPath().setIsChangable(isNfsPathEditable);
         model.getOverride().setIsChangable(isNfsPathEditable);
@@ -482,7 +487,7 @@
         return model;
     }
 
-    private boolean isNfsPathEditable(StorageDomain storage) {
+    private boolean isPathEditable(StorageDomain storage) {
         return (storage.getStorageDomainType() == StorageDomainType.Data || 
storage.getStorageDomainType() == StorageDomainType.Master) && 
storage.getStatus() == StorageDomainStatus.Maintenance;
     }
 
@@ -510,9 +515,11 @@
 
         final PosixStorageModel model = new PosixStorageModel();
         model.setRole(storage.getStorageDomainType());
-        model.getPath().setIsChangable(false);
-        model.getVfsType().setIsChangable(false);
-        model.getMountOptions().setIsChangable(false);
+
+        boolean isPathEditable = isPathEditable(storage);
+        model.getPath().setIsChangable(isPathEditable);
+        model.getVfsType().setIsChangable(isPathEditable);
+        model.getMountOptions().setIsChangable(isPathEditable);
 
         AsyncDataProvider.GetStorageConnectionById(new AsyncQuery(null, new 
INewAsyncCallback() {
             @Override
@@ -1213,6 +1220,9 @@
         storageDomain.setDescription((String) 
model.getDescription().getEntity());
         storageDomain.setStorageFormat((StorageFormatType) 
model.getFormat().getSelectedItem());
 
+        connection = new StorageServerConnections();
+        connection.setid(selectedItem.getStorage());
+
         if (isNew) {
             AsyncDataProvider.GetStorageDomainsByConnection(new 
AsyncQuery(this, new INewAsyncCallback() {
                 @Override
@@ -1234,16 +1244,19 @@
                 }
             }), null, path);
         } else {
-
-            Frontend.RunAction(VdcActionType.UpdateStorageDomain, new 
StorageDomainManagementParameter(storageDomain), new 
IFrontendActionAsyncCallback() {
+            StorageDomain storageDomain = (StorageDomain) getSelectedItem();
+            if(isPathEditable(storageDomain)) {
+                updatePath();
+            }
+            else {
+            Frontend.RunAction(VdcActionType.UpdateStorageDomain, new 
StorageDomainManagementParameter(this.storageDomain), new 
IFrontendActionAsyncCallback() {
                 @Override
                 public void Executed(FrontendActionAsyncResult result) {
-
                     StorageListModel storageListModel = (StorageListModel) 
result.getState();
                     storageListModel.OnFinish(storageListModel.context, true, 
storageListModel.storageModel);
-
                 }
-            }, this);
+                }, this);
+            }
         }
     }
 
@@ -1498,8 +1511,8 @@
             connection.setid(storageDomain.getStorage());
 
             StorageDomain storageDomain = (StorageDomain) getSelectedItem();
-            if(isNfsPathEditable(storageDomain)) {
-                updateNfsPath();
+            if (isPathEditable(storageDomain)) {
+                updatePath();
             }
             else {
                Frontend.RunAction(VdcActionType.UpdateStorageDomain, new 
StorageDomainManagementParameter(this.storageDomain),
@@ -1515,25 +1528,30 @@
         }
     }
 
-    private void updateNfsPath() {
+
+    private void updatePath() {
         StorageModel model = (StorageModel) getWindow();
-        NfsStorageModel nfsModel = (NfsStorageModel) model.getSelectedItem();
         VDS host = (VDS) model.getHost().getSelectedItem();
 
         Guid hostId = Guid.Empty;
         Guid storagePoolId = Guid.Empty;
-        if(host != null) {
-           hostId = host.getId();
-           storagePoolId = host.getStoragePoolId();
+        if (host != null) {
+            hostId = host.getId();
+            storagePoolId = host.getStoragePoolId();
         }
+        IStorageModel storageModel = model.getSelectedItem();
         connection.setconnection(path);
-        connection.setstorage_type(nfsModel.getType());
-        if ((Boolean) nfsModel.getOverride().getEntity()) {
-            connection.setNfsVersion((NfsVersion) ((EntityModel) 
nfsModel.getVersion().getSelectedItem()).getEntity());
-            
connection.setNfsRetrans(nfsModel.getRetransmissions().AsConvertible().nullableShort());
-            
connection.setNfsTimeo(nfsModel.getTimeout().AsConvertible().nullableShort());
+        connection.setstorage_type(storageModel.getType());
+
+        if (storageModel.getType().equals(StorageType.NFS)) {
+            updateNFSProperties(storageModel);
         }
-        StorageServerConnectionParametersBase parameters = new 
StorageServerConnectionParametersBase(connection, hostId);
+        else if (storageModel.getType().equals(StorageType.POSIXFS)) {
+            updatePosixProperties(storageModel);
+        }
+
+        StorageServerConnectionParametersBase parameters =
+                new StorageServerConnectionParametersBase(connection, hostId);
         parameters.setStoragePoolId(storagePoolId);
         Frontend.RunAction(VdcActionType.UpdateStorageServerConnection, 
parameters,
                 new IFrontendActionAsyncCallback() {
@@ -1546,6 +1564,24 @@
                 }, this);
     }
 
+    private void updateNFSProperties(IStorageModel storageModel) {
+        NfsStorageModel nfsModel = (NfsStorageModel) storageModel;
+        if ((Boolean) nfsModel.getOverride().getEntity()) {
+            connection.setNfsVersion((NfsVersion) ((EntityModel) 
nfsModel.getVersion().getSelectedItem()).getEntity());
+            
connection.setNfsRetrans(nfsModel.getRetransmissions().AsConvertible().nullableShort());
+            
connection.setNfsTimeo(nfsModel.getTimeout().AsConvertible().nullableShort());
+        }
+
+    }
+
+    private void updatePosixProperties(IStorageModel storageModel) {
+        PosixStorageModel posixModel = (PosixStorageModel) storageModel;
+        connection.setVfsType(posixModel.getVfsType().getEntity().toString());
+        if (posixModel.getMountOptions().getEntity() != null) {
+            
connection.setMountOptions(posixModel.getMountOptions().getEntity().toString());
+        }
+
+    }
 
     public void SaveNewNfsStorage()
     {
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index 46d9d98..da68f28 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -576,6 +576,7 @@
 NETWORK_ILEGAL_NETWORK_NAME=Network name must be 1-15 long and can contain 
only 'A-Z', 'a-z', '0-9', '_' characters
 STORAGE_OPERATION_FAILED_SPM_NETWORK_PROBLEMS=Storage related operations can't 
be performed while the Storage Pool Manager is down.\nPlease make sure the 
Storage Pool Manager is up and running, and check network connectivity.
 VALIDATION_STORAGE_CONNECTION_INVALID=Mount path is illegal, please use 
[IP:/path or FQDN:/path] convention.
+VALIDATION_STORAGE_CONNECTION_EMPTY_VFSTYPE = VFS type cannot be empty.
 VALIDATION_TAGS_INVALID_TAG_NAME=Invalid tag name. Only alphanumeric chars, 
'-' and '_' characters are valid
 VALIDATION_VM_POOLS_NAME_NOT_NULL=Pool name is required
 VALIDATION_ROLES_NAME_NOT_NULL=Role name is required
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index 3280e59..253f6bd 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -573,6 +573,7 @@
 NETWORK_ILEGAL_NETWORK_NAME=Network name must be 1-15 long and can contain 
only 'A-Z', 'a-z', '0-9', '_' characters
 STORAGE_OPERATION_FAILED_SPM_NETWORK_PROBLEMS=Storage related operations can't 
be performed while the Storage Pool Manager is down.\nPlease make sure the 
Storage Pool Manager is up and running, and check network connectivity.
 VALIDATION_STORAGE_CONNECTION_INVALID=Mount path is illegal, please use 
[IP:/path or FQDN:/path] convention.
+VALIDATION_STORAGE_CONNECTION_EMPTY_VFSTYPE = VFS type cannot be empty.
 VALIDATION_TAGS_INVALID_TAG_NAME=Invalid tag name. Only alphanumeric chars, 
'-' and '_' characters are valid
 VALIDATION_VM_POOLS_NAME_NOT_NULL=Pool name is required
 VALIDATION_ROLES_NAME_NOT_NULL=Role name is required


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

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

Reply via email to