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