Lior Vernia has uploaded a new change for review. Change subject: webadmin: Simplify VnicProfile flow in NetworkModel ......................................................................
webadmin: Simplify VnicProfile flow in NetworkModel The previous implementation was over-complicated, and allowed users to perform the same actions from both the Edit Network dialog and the Network/Profiles subtab. It is now only possible to create profiles for a newly-created network, or create profiles for a network that used to be a non-VM network and is turned into a VM network (which from a profiles point of view is the same as a new network). Change-Id: I21b632e7625e24a6ecb28e278639805990f6af41 Bug-Url: https://bugzilla.redhat.com/1031558 Signed-off-by: Lior Vernia <lver...@redhat.com> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/EditNetworkModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/EditNetworkPopupView.java 4 files changed, 36 insertions(+), 132 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/38/22038/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/EditNetworkModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/EditNetworkModel.java index d50efac..4bbddba 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/EditNetworkModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/EditNetworkModel.java @@ -1,35 +1,18 @@ package org.ovirt.engine.ui.uicommonweb.models.datacenters; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; - import org.ovirt.engine.core.common.action.AddNetworkStoragePoolParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.core.common.businessentities.network.Network; -import org.ovirt.engine.core.common.businessentities.network.NetworkQoS; -import org.ovirt.engine.core.common.businessentities.network.VnicProfileView; -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.ListModel; -import org.ovirt.engine.ui.uicommonweb.models.profiles.EditVnicProfileModel; -import org.ovirt.engine.ui.uicommonweb.models.profiles.NewVnicProfileModel; -import org.ovirt.engine.ui.uicommonweb.models.profiles.VnicProfileModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult; -import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult; import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback; -import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback; public class EditNetworkModel extends NetworkModel { - - private List<VnicProfileModel> originalProfileModels = new ArrayList<VnicProfileModel>(); public EditNetworkModel(Network network, ListModel sourceListModel) { super(network, sourceListModel); @@ -85,41 +68,6 @@ } @Override - protected void initProfiles() { - AsyncQuery profilesQuery = new AsyncQuery(); - profilesQuery.asyncCallback = new INewAsyncCallback() { - - @Override - public void onSuccess(Object model, Object returnValue) { - List<VnicProfileModel> profilesModels = new LinkedList<VnicProfileModel>(); - for (VnicProfileView profileView : (List<VnicProfileView>) returnValue) { - VnicProfileModel editModel = new EditVnicProfileModel(getSourceListModel(), - getSelectedDc().getcompatibility_version(), - profileView, getSelectedDc().getId(), false); - - NetworkQoS networkQoS = new NetworkQoS(); - networkQoS.setName(profileView.getNetworkQosName() == null - ? ConstantsManager.getInstance().getConstants().unlimitedQoSTitle() - : profileView.getNetworkQosName()); - editModel.getNetworkQoS().setSelectedItem(networkQoS); - - editModel.getNetworkQoS().setIsChangable(false); - profilesModels.add(editModel); - editModel.getName().setIsChangable(false); - } - originalProfileModels.clear(); - originalProfileModels.addAll(profilesModels); - - if (profilesModels.isEmpty() && !(Boolean) getIsVmNetwork().getEntity()) { - profilesModels.add(getDefaultProfile()); - } - getProfiles().setItems(profilesModels); - } - }; - AsyncDataProvider.getVnicProfilesByNetworkId(profilesQuery, getNetwork().getId()); - } - - @Override protected void onExportChanged() { if ((Boolean) getExport().getEntity()) { getHasVLanTag().setIsChangable(false); @@ -145,41 +93,4 @@ }, null); } - - @Override - protected void performProfilesActions(final Guid networkGuid) { - - List<VnicProfileModel> profileModels = (List<VnicProfileModel>) getProfiles().getItems(); - List<VnicProfileModel> profileModelsToRemove = new ArrayList<VnicProfileModel>(originalProfileModels); - profileModelsToRemove.removeAll(profileModels); - - final List<VnicProfileModel> profileModelsToAdd = new ArrayList<VnicProfileModel>(); - - for (VnicProfileModel profileModel : profileModels) { - if (profileModel instanceof NewVnicProfileModel) { - profileModelsToAdd.add(profileModel); - } - } - startProgress(null); - - performVnicProfileAction(VdcActionType.RemoveVnicProfile, - profileModelsToRemove, - new IFrontendMultipleActionAsyncCallback() { - - @Override - public void executed(FrontendMultipleActionAsyncResult result) { - performVnicProfileAction(VdcActionType.AddVnicProfile, - profileModelsToAdd, - new IFrontendMultipleActionAsyncCallback() { - - @Override - public void executed(FrontendMultipleActionAsyncResult result) { - stopProgress(); - cancel(); - } - }, networkGuid); - } - }, networkGuid); - } - } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java index cc4e1ce..49bf2a8 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java @@ -1,6 +1,7 @@ package org.ovirt.engine.ui.uicommonweb.models.datacenters; import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; import org.ovirt.engine.core.common.action.VdcActionParametersBase; @@ -32,6 +33,7 @@ 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.FrontendMultipleActionAsyncResult; import org.ovirt.engine.ui.uicompat.IEventListener; import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback; @@ -443,6 +445,21 @@ initProfiles(); } + private void initProfiles() { + Iterable<VnicProfileModel> existingProfiles = getProfiles().getItems(); + if (existingProfiles == null) { + // first run (dialog has just been opened and default DC chosen), create default entry + List<VnicProfileModel> profiles = new LinkedList<VnicProfileModel>(); + profiles.add(getDefaultProfile()); + getProfiles().setItems(profiles); + } else { + // not first run (user picked different DC), want to keep existing entries and update DC-related properties + for (VnicProfileModel profile : existingProfiles) { + profile.updateDc(getSelectedDc().getcompatibility_version(), getSelectedDc().getId()); + } + } + } + protected void addCommands() { UICommand tempVar2 = new UICommand("OnSave", this); //$NON-NLS-1$ tempVar2.setTitle(ConstantsManager.getInstance().getConstants().ok()); @@ -498,13 +515,9 @@ } } - protected abstract void performProfilesActions(Guid networkGuid); - - protected void performVnicProfileAction(VdcActionType action, - List<VnicProfileModel> profileModels, - IFrontendMultipleActionAsyncCallback callback, Guid networkGuid) { + private void performProfilesActions(Guid networkGuid) { + List<VnicProfileModel> profileModels = (List<VnicProfileModel>) getProfiles().getItems(); if (profileModels.isEmpty()) { - callback.executed(null); return; } @@ -521,7 +534,14 @@ } } - Frontend.RunMultipleAction(action, paramlist, callback, null); + IFrontendMultipleActionAsyncCallback callback = new IFrontendMultipleActionAsyncCallback() { + @Override + public void executed(FrontendMultipleActionAsyncResult result) { + stopProgress(); + cancel(); + } + }; + Frontend.RunMultipleAction(VdcActionType.AddVnicProfile, paramlist, callback, null); } void cancel() { @@ -567,8 +587,6 @@ protected abstract void initIsVm(); protected abstract void selectExternalProvider(); - - protected abstract void initProfiles(); protected abstract void onExportChanged(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkModel.java index cff3faf..2af3281 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkModel.java @@ -1,7 +1,6 @@ package org.ovirt.engine.ui.uicommonweb.models.datacenters; import java.util.ArrayList; -import java.util.LinkedList; import java.util.List; import org.ovirt.engine.core.common.action.AddNetworkStoragePoolParameters; @@ -21,12 +20,9 @@ import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.ListModel; -import org.ovirt.engine.ui.uicommonweb.models.profiles.VnicProfileModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult; -import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult; import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback; -import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback; public class NewNetworkModel extends NetworkModel { @@ -104,22 +100,6 @@ @Override protected void selectExternalProvider() { getExternalProviders().setSelectedItem(Linq.firstOrDefault(getExternalProviders().getItems())); - } - - @Override - protected void initProfiles() { - Iterable<VnicProfileModel> existingProfiles = getProfiles().getItems(); - if (existingProfiles == null) { - // first run (dialog has just been opened and default DC chosen), create default entry - List<VnicProfileModel> profiles = new LinkedList<VnicProfileModel>(); - profiles.add(getDefaultProfile()); - getProfiles().setItems(profiles); - } else { - // not first run (user picked different DC), want to keep existing entries and update DC-related properties - for (VnicProfileModel profile : existingProfiles) { - profile.updateDc(getSelectedDc().getcompatibility_version(), getSelectedDc().getId()); - } - } } @Override @@ -215,19 +195,5 @@ } } return clusterToAttach; - } - - @Override - protected void performProfilesActions(Guid networkGuid) { - performVnicProfileAction(VdcActionType.AddVnicProfile, - (List<VnicProfileModel>) getProfiles().getItems(), - new IFrontendMultipleActionAsyncCallback() { - @Override - public void executed(FrontendMultipleActionAsyncResult result) { - stopProgress(); - cancel(); - - } - }, networkGuid); } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/EditNetworkPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/EditNetworkPopupView.java index 2597954..3597c1a 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/EditNetworkPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/datacenter/EditNetworkPopupView.java @@ -1,5 +1,6 @@ package org.ovirt.engine.ui.webadmin.section.main.view.popup.datacenter; +import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.ui.uicommonweb.models.datacenters.EditNetworkModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.ApplicationResources; @@ -18,6 +19,8 @@ } private final Driver driver = GWT.create(Driver.class); + + private Network network; @Inject public EditNetworkPopupView(EventBus eventBus, @@ -38,6 +41,7 @@ @Override public void edit(EditNetworkModel object) { driver.edit(object); + network = object.getNetwork(); } @Override @@ -52,4 +56,9 @@ return driver.flush(); } + @Override + public void toggleProfilesVisibility(boolean visible) { + super.toggleProfilesVisibility(visible && !network.isVmNetwork()); + } + } -- To view, visit http://gerrit.ovirt.org/22038 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I21b632e7625e24a6ecb28e278639805990f6af41 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.3 Gerrit-Owner: Lior Vernia <lver...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches