Amit Aviram has uploaded a new change for review. Change subject: webadmin: StorageListModel: refactorig storage prepare for edit. ......................................................................
webadmin: StorageListModel: refactorig storage prepare for edit. As preparing storage for editing in StorageListModel has similiar logic through File and Block storage and all of their types, and currently there is a "prepare" method for each of those types- it is now consolidated into each model, with the proper differences devided between the models. prepareStorageForEdit will replace all of these "prepareXstorageForEdit" and let the proper model to do the rest of the work, devided through SAN and FILE storage types. Change-Id: I2bb2a4c142eb1fe2870dc00d0d8764a6c866f8a2 Signed-off-by: Amit Aviram <[email protected]> --- A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/FileStorageModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/IStorageModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/LocalStorageModel.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/PosixStorageModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/SanStorageModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java 7 files changed, 176 insertions(+), 195 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/28/38128/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/FileStorageModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/FileStorageModel.java new file mode 100644 index 0000000..ff20e40 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/FileStorageModel.java @@ -0,0 +1,55 @@ +package org.ovirt.engine.ui.uicommonweb.models.storage; + +import org.ovirt.engine.core.common.businessentities.StorageDomain; +import org.ovirt.engine.core.common.businessentities.StorageDomainSharedStatus; +import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; +import org.ovirt.engine.core.common.businessentities.StorageDomainType; +import org.ovirt.engine.core.common.businessentities.StorageServerConnections; +import org.ovirt.engine.ui.frontend.AsyncQuery; +import org.ovirt.engine.ui.frontend.INewAsyncCallback; +import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; +import org.ovirt.engine.ui.uicommonweb.models.EntityModel; +import org.ovirt.engine.ui.uicommonweb.models.Model; + +@SuppressWarnings("unused") +public abstract class FileStorageModel extends Model implements IStorageModel{ + private EntityModel<String> path; + + public EntityModel<String> getPath() { + return path; + } + + public boolean isEditable(StorageDomain storage) { + StorageDomainType storageDomainType = storage.getStorageDomainType(); + return storageDomainType.isInternalDomain() && isStorageStatusValidForPathEditing(storage); + } + + private boolean isStorageStatusValidForPathEditing(StorageDomain storage) { + return (storage.getStatus() == StorageDomainStatus.Maintenance + || storage.getStorageDomainSharedStatus() == StorageDomainSharedStatus.Unattached); + } + + protected abstract void prepareConnectionForEditing (StorageServerConnections connection); + + public void prepareForEdit(StorageDomain storage) { + boolean isEditable = isEditable(storage); + getPath().setIsChangable(isEditable); + + AsyncDataProvider.getInstance().getStorageConnectionById(new AsyncQuery(null, new INewAsyncCallback() { + @Override + public void onSuccess(Object target, Object returnValue) { + StorageServerConnections connection = (StorageServerConnections) returnValue; + getPath().setEntity(connection.getconnection()); + prepareConnectionForEditing(connection); + } + }), storage.getStorage(), true); + + setHostChangeability(isEditable); + } + + protected void setHostChangeability(boolean 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 + getContainer().getHost().setIsChangable(isPathEditable); + } +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/IStorageModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/IStorageModel.java index 77ef310..bfd9598 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/IStorageModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/IStorageModel.java @@ -1,5 +1,6 @@ package org.ovirt.engine.ui.uicommonweb.models.storage; +import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainType; import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.ui.uicommonweb.UICommand; @@ -20,4 +21,8 @@ UICommand getUpdateCommand(); boolean validate(); + + void prepareForEdit(StorageDomain storage); + + boolean isEditable(StorageDomain storage); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/LocalStorageModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/LocalStorageModel.java index 7145b9a..7fb8463 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/LocalStorageModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/LocalStorageModel.java @@ -1,17 +1,17 @@ package org.ovirt.engine.ui.uicommonweb.models.storage; import org.ovirt.engine.core.common.businessentities.StorageDomainType; +import org.ovirt.engine.core.common.businessentities.StorageServerConnections; import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; -import org.ovirt.engine.ui.uicommonweb.models.Model; import org.ovirt.engine.ui.uicommonweb.validation.IValidation; import org.ovirt.engine.ui.uicommonweb.validation.LocalfsLinuxMountPointValidation; import org.ovirt.engine.ui.uicommonweb.validation.NonUtfValidation; import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation; @SuppressWarnings("unused") -public class LocalStorageModel extends Model implements IStorageModel { +public class LocalStorageModel extends FileStorageModel { private UICommand updateCommand; @@ -54,12 +54,13 @@ return path; } + @Override protected void prepareConnectionForEditing(StorageServerConnections connection) {} + public void setPath(EntityModel<String> value) { path = value; } public LocalStorageModel() { - setUpdateCommand(new UICommand("Update", this)); //$NON-NLS-1$ setPath(new EntityModel<String>()); } 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 38efdf0..3aa9b06 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 @@ -4,15 +4,16 @@ import java.util.List; import org.ovirt.engine.core.common.businessentities.NfsVersion; +import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainType; import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.StorageServerConnections; import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; -import org.ovirt.engine.ui.uicommonweb.models.Model; import org.ovirt.engine.ui.uicommonweb.validation.IValidation; import org.ovirt.engine.ui.uicommonweb.validation.IntegerValidation; import org.ovirt.engine.ui.uicommonweb.validation.LinuxMountPointValidation; @@ -26,7 +27,7 @@ import org.ovirt.engine.ui.uicompat.UIConstants; @SuppressWarnings("unused") -public class NfsStorageModel extends Model implements IStorageModel { +public class NfsStorageModel extends FileStorageModel { //retrans nfs option max value private final static short RETRANS_MAX = 32767; @@ -98,6 +99,30 @@ return override; } + @Override protected void prepareConnectionForEditing(StorageServerConnections connection) { + getRetransmissions().setEntity(connection.getNfsRetrans()); + getTimeout().setEntity(connection.getNfsTimeo()); + getMountOptions().setEntity(connection.getMountOptions()); + for (EntityModel<NfsVersion> item : getVersion().getItems()) { + EntityModel itemModel = item; + boolean noNfsVersion = itemModel.getEntity() == null && connection.getNfsVersion() == null; + boolean foundNfsVersion = itemModel.getEntity() != null && + itemModel.getEntity().equals(connection.getNfsVersion()); + + if (noNfsVersion || foundNfsVersion) { + getVersion().setSelectedItem(item); + break; + } + } + + // If any settings were overridden, reflect this in the override checkbox + getOverride().setEntity( + connection.getNfsVersion() != null || + connection.getNfsRetrans() != null || + connection.getNfsTimeo() != null || + connection.getMountOptions() != null); + } + private void setOverride(EntityModel<Boolean> value) { override = value; } @@ -148,7 +173,6 @@ } public NfsStorageModel() { - setPathChangedEvent(new Event<EventArgs>(pathChangedEventDefinition)); setUpdateCommand(new UICommand("Update", this)); //$NON-NLS-1$ @@ -266,4 +290,10 @@ getTimeout().setIsAvailable(available); getMountOptions().setIsAvailable(available); } + + @Override + public void prepareForEdit(StorageDomain storage) { + getOverride().setIsChangable(isEditable(storage)); + super.prepareForEdit(storage); + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/PosixStorageModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/PosixStorageModel.java index 0b10a1e..2461e95 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/PosixStorageModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/PosixStorageModel.java @@ -1,18 +1,19 @@ package org.ovirt.engine.ui.uicommonweb.models.storage; import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainType; +import org.ovirt.engine.core.common.businessentities.StorageServerConnections; import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; -import org.ovirt.engine.ui.uicommonweb.models.Model; import org.ovirt.engine.ui.uicommonweb.validation.AsciiNameValidation; import org.ovirt.engine.ui.uicommonweb.validation.IValidation; import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation; import org.ovirt.engine.ui.uicompat.ConstantsManager; @SuppressWarnings("unused") -public class PosixStorageModel extends Model implements IStorageModel { +public class PosixStorageModel extends FileStorageModel { private UICommand updateCommand; @@ -118,7 +119,20 @@ return VdcActionType.AddPosixFsStorageDomain; } + public void setVfsChangeability(boolean isPathEditable) { getVfsType().setIsChangable(isPathEditable); } + + protected void prepareConnectionForEditing(StorageServerConnections connection) { + getMountOptions().setEntity(connection.getMountOptions()); + getVfsType().setEntity(connection.getVfsType()); + } + + @Override public void prepareForEdit(StorageDomain storage) { + super.prepareForEdit(storage); + boolean isEditable = isEditable(storage); + setVfsChangeability(isEditable); + getMountOptions().setIsChangable(isEditable); + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/SanStorageModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/SanStorageModel.java index 0ae6c57..018ec3f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/SanStorageModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/SanStorageModel.java @@ -13,14 +13,17 @@ import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.common.utils.ObjectUtils; +import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.ui.frontend.AsyncQuery; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; import org.ovirt.engine.ui.uicommonweb.Linq; +import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.Model; import org.ovirt.engine.ui.uicommonweb.models.hosts.ValueEventArgs; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.Event; +import org.ovirt.engine.ui.uicompat.EventArgs; import org.ovirt.engine.ui.uicompat.EventDefinition; import org.ovirt.engine.ui.uicompat.IEventListener; import org.ovirt.engine.ui.uicompat.ObservableCollection; @@ -664,4 +667,40 @@ return super.validate() && getIsValid(); } + + public boolean isEditable(StorageDomain storage) { + return getContainer().isStorageActive() || getContainer().isNewStorage(); + } + + public void prepareForEdit(final StorageDomain storage) + { + if (isEditable(storage)) { + final SanStorageModel thisModel = this; + getContainer().getHost().getSelectedItemChangedEvent().addListener(new IEventListener<EventArgs>() { + @Override + public void eventRaised(Event<? extends EventArgs> ev, Object sender, EventArgs args) { + postPrepareSanStorageForEdit(thisModel, true, storage); + } + }); + } + else { + postPrepareSanStorageForEdit(this, false, storage); + } + } + + private void postPrepareSanStorageForEdit(final SanStorageModel model, boolean isStorageActive, StorageDomain storage) + { + model.setStorageDomain(storage); + + VDS host = getContainer().getHost().getSelectedItem(); + Guid hostId = host != null && isStorageActive ? host.getId() : null; + + AsyncDataProvider.getInstance().getLunsByVgId(new AsyncQuery(getContainer(), new INewAsyncCallback() { + @Override + public void onSuccess(Object target, Object returnValue) { + ArrayList<LUNs> lunList = (ArrayList<LUNs>) returnValue; + model.applyData(lunList, true); + } + }), storage.getStorage(), hostId); + } } 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 cf13321..6202c89 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 @@ -15,7 +15,6 @@ import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; -import org.ovirt.engine.core.common.businessentities.LUNs; import org.ovirt.engine.core.common.businessentities.NfsVersion; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainSharedStatus; @@ -55,11 +54,8 @@ import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation; import org.ovirt.engine.ui.uicommonweb.validation.RegexValidation; import org.ovirt.engine.ui.uicompat.ConstantsManager; -import org.ovirt.engine.ui.uicompat.Event; -import org.ovirt.engine.ui.uicompat.EventArgs; import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult; import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult; -import org.ovirt.engine.ui.uicompat.IEventListener; import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback; import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback; import org.ovirt.engine.ui.uicompat.ITaskTarget; @@ -347,39 +343,7 @@ boolean isPathEditable = isPathEditable(storage); isStorageNameEditable = isStorageNameEditable || isPathEditable; - IStorageModel item = null; - switch (storage.getStorageType()) { - case NFS: - item = prepareNfsStorageForEdit(storage); - //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 FCP: - item = prepareFcpStorageForEdit(storage); - break; - - case ISCSI: - item = prepareIscsiStorageForEdit(storage); - break; - - case LOCALFS: - item = prepareLocalStorageForEdit(storage); - model.getHost().setIsChangable(isPathEditable); - break; - - case POSIXFS: - item = preparePosixStorageForEdit(storage); - //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: - item = preparePosixStorageForEdit(storage); - break; - } + IStorageModel item = prepareStorageForEdit(storage, model); model.setItems(new ArrayList<IStorageModel>(Arrays.asList(new IStorageModel[] {item}))); model.setSelectedItem(item); @@ -410,48 +374,31 @@ } } - private IStorageModel prepareNfsStorageForEdit(StorageDomain storage) - { - final NfsStorageModel model = new NfsStorageModel(); - model.setRole(storage.getStorageDomainType()); + private IStorageModel prepareStorageForEdit(StorageDomain storage, StorageModel model) { + final IStorageModel storageTypeModel = getStorageModelByStorage(storage); + storageTypeModel.setContainer(model); + storageTypeModel.setRole(storage.getStorageDomainType()); + storageTypeModel.prepareForEdit(storage); - boolean isNfsPathEditable = isPathEditable(storage); + return storageTypeModel; + } - model.getPath().setIsChangable(isNfsPathEditable); - model.getOverride().setIsChangable(isNfsPathEditable); - - AsyncDataProvider.getInstance().getStorageConnectionById(new AsyncQuery(null, new INewAsyncCallback() { - @Override - public void onSuccess(Object target, Object returnValue) { - - StorageServerConnections connection = (StorageServerConnections) returnValue; - 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 = item; - boolean noNfsVersion = itemModel.getEntity() == null && connection.getNfsVersion() == null; - boolean foundNfsVersion = itemModel.getEntity() != null && - itemModel.getEntity().equals(connection.getNfsVersion()); - - if (noNfsVersion || foundNfsVersion) { - model.getVersion().setSelectedItem(item); - break; - } - } - - // If any settings were overridden, reflect this in the override checkbox - model.getOverride().setEntity( - connection.getNfsVersion() != null || - connection.getNfsRetrans() != null || - connection.getNfsTimeo() != null || - connection.getMountOptions() != null); - - } - }), storage.getStorage(), true); - - return model; + private IStorageModel getStorageModelByStorage(StorageDomain storage) { + switch (storage.getStorageType()) { + case NFS: + return new NfsStorageModel(); + case FCP: + return new FcpStorageModel(); + case ISCSI: + return new IscsiStorageModel(); + case LOCALFS: + return new LocalStorageModel(); + case POSIXFS: + return new PosixStorageModel(); + case GLUSTERFS: + return new GlusterStorageModel(); + } + return null; } private boolean isPathEditable(StorageDomain storage) { @@ -465,116 +412,6 @@ private boolean isStorageStatusValidForPathEditing(StorageDomain storage) { return (storage.getStatus() == StorageDomainStatus.Maintenance || storage.getStorageDomainSharedStatus() == StorageDomainSharedStatus.Unattached); - } - - private IStorageModel prepareLocalStorageForEdit(StorageDomain storage) - { - LocalStorageModel model = new LocalStorageModel(); - model.setRole(storage.getStorageDomainType()); - boolean isPathEditable = isPathEditable(storage); - model.getPath().setIsChangable(isPathEditable); - - AsyncDataProvider.getInstance().getStorageConnectionById(new AsyncQuery(model, new INewAsyncCallback() { - @Override - public void onSuccess(Object target, Object returnValue) { - LocalStorageModel localStorageModel = (LocalStorageModel) target; - StorageServerConnections connection = (StorageServerConnections) returnValue; - localStorageModel.getPath().setEntity(connection.getconnection()); - - } - }), storage.getStorage(), true); - - return model; - } - - private IStorageModel preparePosixStorageForEdit(StorageDomain storage) { - - final PosixStorageModel model = getPosixModelByStorage(storage); - model.setRole(storage.getStorageDomainType()); - - boolean isPathEditable = isPathEditable(storage); - model.getPath().setIsChangable(isPathEditable); - model.setVfsChangeability(isPathEditable); - model.getMountOptions().setIsChangable(isPathEditable); - - AsyncDataProvider.getInstance().getStorageConnectionById(new AsyncQuery(null, new INewAsyncCallback() { - @Override - public void onSuccess(Object target, Object returnValue) { - - StorageServerConnections connection = (StorageServerConnections) returnValue; - model.getPath().setEntity(connection.getconnection()); - model.getVfsType().setEntity(connection.getVfsType()); - model.getMountOptions().setEntity(connection.getMountOptions()); - - } - }), storage.getStorage(), true); - - return model; - } - - private PosixStorageModel getPosixModelByStorage(StorageDomain storage) { - switch (storage.getStorageType()) { - case GLUSTERFS: - return new GlusterStorageModel(); - default: - return new PosixStorageModel(); - } - } - - private IStorageModel prepareIscsiStorageForEdit(StorageDomain storage) - { - IscsiStorageModel model = new IscsiStorageModel(); - model.setRole(storage.getStorageDomainType()); - - prepareSanStorageForEdit(model); - - return model; - } - - private IStorageModel prepareFcpStorageForEdit(StorageDomain storage) - { - FcpStorageModel model = new FcpStorageModel(); - model.setRole(storage.getStorageDomainType()); - - prepareSanStorageForEdit(model); - - return model; - } - - private void prepareSanStorageForEdit(final SanStorageModel model) - { - StorageModel storageModel = (StorageModel) getWindow(); - boolean isStorageEditable = storageModel.isStorageActive() || storageModel.isNewStorage(); - - if (isStorageEditable) { - storageModel.getHost().getSelectedItemChangedEvent().addListener(new IEventListener<EventArgs>() { - @Override - public void eventRaised(Event<? extends EventArgs> ev, Object sender, EventArgs args) { - postPrepareSanStorageForEdit(model, true); - } - }); - } - else { - postPrepareSanStorageForEdit(model, false); - } - } - - private void postPrepareSanStorageForEdit(final SanStorageModel model, boolean isStorageActive) - { - StorageModel storageModel = (StorageModel) getWindow(); - StorageDomain storage = (StorageDomain) getSelectedItem(); - model.setStorageDomain(storage); - - VDS host = storageModel.getHost().getSelectedItem(); - Guid hostId = host != null && isStorageActive ? host.getId() : null; - - AsyncDataProvider.getInstance().getLunsByVgId(new AsyncQuery(storageModel, new INewAsyncCallback() { - @Override - public void onSuccess(Object target, Object returnValue) { - ArrayList<LUNs> lunList = (ArrayList<LUNs>) returnValue; - model.applyData(lunList, true); - } - }), storage.getStorage(), hostId); } private void importDomain() -- To view, visit https://gerrit.ovirt.org/38128 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2bb2a4c142eb1fe2870dc00d0d8764a6c866f8a2 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Amit Aviram <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
