Arik Hadas has uploaded a new change for review. Change subject: webadmin: load vms from export domain on-demand ......................................................................
webadmin: load vms from export domain on-demand Do not load VMs from the export domain until the user click a 'load' button. Change-Id: I17d884236e738835f909f96662eee7a9d2428378 Signed-off-by: Arik Hadas <aha...@redhat.com> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmsModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.ui.xml 4 files changed, 84 insertions(+), 98 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/96/42096/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java index 31241b2..90098a6 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java @@ -388,6 +388,9 @@ @DefaultStringValue("General") String generalLabel(); + @DefaultStringValue("Load") + String loadLabel(); + @DefaultStringValue("Disks") String disksLabel(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmsModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmsModel.java index b788f60..22afca6 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmsModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmsModel.java @@ -19,7 +19,6 @@ 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; @@ -30,6 +29,9 @@ import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.ListWithSimpleDetailsModel; 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.IEventListener; import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; import com.google.inject.Inject; @@ -94,44 +96,20 @@ initDataCenters(); } - private void onImportSourceChanged() { - final ImportSource source = importSources.getSelectedItem(); - if (source == null) { - return; - } - - importedVmModels.setItems(null); - externalVmModels.setItems(null); - - switch(source) { - case EXPORT_DOMAIN: - onExportDomainChosen(); - break; - default: - } - } - - private void onExportDomainChosen() { - StoragePool dataCenter = dataCenters.getSelectedItem(); - - startProgress(null); - Frontend.getInstance().runQuery( - VdcQueryType.GetStorageDomainsByStoragePoolId, - new IdQueryParameters(dataCenter.getId()), - new AsyncQuery(this, createGetStorageDomainsByStoragePoolIdCallback(dataCenter))); - } - private INewAsyncCallback createGetStorageDomainsByStoragePoolIdCallback(final StoragePool dataCenter) { return new INewAsyncCallback() { @Override public void onSuccess(Object model, Object ReturnValue) { List<StorageDomain> storageDomains = ((VdcQueryReturnValue) ReturnValue).getReturnValue(); - final StorageDomain exportDomain = getExportDomain(storageDomains); - if (exportDomain != null) { + exportDomain = getExportDomain(storageDomains); + if (exportDomain == null) { + setErrorToFetchData(ConstantsManager.getInstance().getConstants().notAvailableWithNoActiveExportDomain()); + stopProgress(); + } else { setExportName(exportDomain.getName()); setExportDescription(exportDomain.getDescription()); - + // get export-path AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); _asyncQuery.asyncCallback = new INewAsyncCallback() { @@ -140,37 +118,11 @@ { StorageServerConnections connection = (StorageServerConnections) ReturnValue; setExportPath(connection == null ? null : connection.getconnection()); - getVmsFromExportDomain(dataCenter.getId(), exportDomain.getId()); + stopProgress(); } }; AsyncDataProvider.getInstance().getStorageConnectionById(_asyncQuery, exportDomain.getStorage(), true); - } - else { - setErrorToFetchData(ConstantsManager.getInstance().getConstants().notAvailableWithNoActiveExportDomain()); - stopProgress(); - } - } - }; - } - - private void getVmsFromExportDomain(Guid dataCenterId, Guid storageDomainId) { - Frontend.getInstance().runQuery(VdcQueryType.GetVmsFromExportDomain, - new GetAllFromExportDomainQueryParameters(dataCenterId, storageDomainId), - new AsyncQuery(this, createGetVmsFromExportDomainCallback())); - } - - private INewAsyncCallback createGetVmsFromExportDomainCallback() { - return new INewAsyncCallback() { - @Override - public void onSuccess(Object model, Object returnValue) { - List<EntityModel<VM>> externalVms = new ArrayList<EntityModel<VM>>(); - for (VM vm : ((VdcQueryReturnValue) returnValue).<List<VM>>getReturnValue()) { - externalVms.add(new EntityModel<VM>(vm)); - } - - ImportVmsModel.this.externalVmModels.setItems(externalVms); - stopProgress(); } }; } @@ -186,6 +138,17 @@ } private void initDataCenters() { + getDataCenters().getSelectedItemChangedEvent().addListener(new IEventListener<EventArgs>() { + @Override + public void eventRaised(Event<? extends EventArgs> ev, Object sender, EventArgs args) { + StoragePool dataCenter = dataCenters.getSelectedItem(); + Frontend.getInstance().runQuery( + VdcQueryType.GetStorageDomainsByStoragePoolId, + new IdQueryParameters(dataCenter.getId()), + new AsyncQuery(this, createGetStorageDomainsByStoragePoolIdCallback(dataCenter))); + } + }); + AsyncDataProvider.getInstance().getDataCenterList(new AsyncQuery(new INewAsyncCallback() { @Override public void onSuccess(Object model, Object returnValue) { @@ -212,7 +175,18 @@ private void initImportSources() { importSources.setItems(Arrays.asList(ImportSource.values())); - onImportSourceChanged(); + importSources.setSelectedItem(ImportSource.EXPORT_DOMAIN); + importSources.getSelectedItemChangedEvent().addListener(new IEventListener<EventArgs>() { + @Override + public void eventRaised(Event<? extends EventArgs> ev, Object sender, EventArgs args) { + clearVms(); + } + }); + } + + private void clearVms() { + importedVmModels.setItems(null); + externalVmModels.setItems(null); } @Override @@ -226,8 +200,31 @@ } } + public void loadVmsFromExportDomain() { + startProgress(null); + Frontend.getInstance().runQuery(VdcQueryType.GetVmsFromExportDomain, + new GetAllFromExportDomainQueryParameters(getDataCenters().getSelectedItem().getId(), exportDomain.getId()), + new AsyncQuery(this, new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object returnValue) { + updateVms(((VdcQueryReturnValue) returnValue).<List<VM>>getReturnValue()); + } + })); + } + + private void updateVms(List<VM> vms) { + clearVms(); + List<EntityModel<VM>> externalVms = new ArrayList<>(); + for (VM vm : vms) { + externalVms.add(new EntityModel<VM>(vm)); + } + + externalVmModels.setItems(externalVms); + stopProgress(); + } + public List<VM> getVmsToImport() { - List<VM> vmsToImport = new ArrayList<VM>(); + List<VM> vmsToImport = new ArrayList<>(); for (EntityModel<VM> externalVm : importedVmModels.getItems()) { vmsToImport.add(externalVm.getEntity()); } @@ -287,10 +284,6 @@ private void setImportedVmModels(ListModel<EntityModel<VM>> importedVmModels) { this.importedVmModels = importedVmModels; - } - - public void reload() { - onImportSourceChanged(); } public EntityModel<Boolean> getImportSourceValid() { diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.java index 80c8eb9..cca167c 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.java @@ -4,6 +4,7 @@ import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.ui.common.idhandler.WithElementId; import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView; +import org.ovirt.engine.ui.common.widget.UiCommandButton; import org.ovirt.engine.ui.common.widget.VerticalSplitTable; import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel; import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable; @@ -20,20 +21,17 @@ import org.ovirt.engine.ui.uicompat.EventArgs; import org.ovirt.engine.ui.uicompat.IEventListener; import org.ovirt.engine.ui.webadmin.ApplicationConstants; -import org.ovirt.engine.ui.webadmin.ApplicationResources; -import org.ovirt.engine.ui.webadmin.ApplicationTemplates; import org.ovirt.engine.ui.webadmin.gin.AssetProvider; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.ImportVmsPopupPresenterWidget; import com.google.gwt.core.client.GWT; import com.google.gwt.editor.client.SimpleBeanEditorDriver; import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.shared.EventBus; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.uibinder.client.UiHandler; -import com.google.gwt.user.client.ui.ButtonBase; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Label; import com.google.inject.Inject; @@ -79,8 +77,7 @@ FlowPanel exportPanel; @UiField - @Ignore - public ButtonBase refreshButton; + UiCommandButton loadVmsFromExportDomainButton; @UiField @Ignore @@ -98,16 +95,7 @@ @Path("exportDescription") StringEntityModelLabelEditor exportDomainDescription; - private ImportVmsModel model; - - private final static ApplicationTemplates templates = AssetProvider.getTemplates(); - private final static ApplicationResources resources = AssetProvider.getResources(); private final static ApplicationConstants constants = AssetProvider.getConstants(); - - @UiHandler("refreshButton") - void handleRefreshButtonClick(ClickEvent event) { - model.reload(); - } @Inject public ImportVmsPopupView(EventBus eventBus) { @@ -122,8 +110,8 @@ return new EnumRenderer<ImportSource>().render(is); } }); - externalVms = new EntityModelCellTable<ListModel<EntityModel<VM>>>(true, false, true); - importedVms = new EntityModelCellTable<ListModel<EntityModel<VM>>>(true, false, true); + externalVms = new EntityModelCellTable<>(true, false, true); + importedVms = new EntityModelCellTable<>(true, false, true); splitTable = new VerticalSplitTable<EntityModel<VM>>(externalVms, importedVms, @@ -144,6 +132,7 @@ exportDomainDescription.setLabel(constants.descriptionLabel()); exportDomainDescription.addWrapperStyleName(style.providersStyle()); + loadVmsFromExportDomainButton.setLabel(constants.loadLabel()); driver.initialize(this); } @@ -165,7 +154,6 @@ @Override public void edit(final ImportVmsModel model) { - this.model = model; splitTable.edit( model.getExternalVmModels(), model.getImportedVmModels(), @@ -180,6 +168,13 @@ } }; }); + + loadVmsButton.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + model.loadVmsFromExportDomain(); + } + }); } @Override diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.ui.xml index 5d8dd87..c576e82 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.ui.xml +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.ui.xml @@ -24,25 +24,18 @@ height: 135px; } - .refreshButton { - float: left; - font-size: 12px; - height: 14px; - width: 12px; - margin-right: 5px; - margin-left: 200px; - margin-up: 10px; - padding: 2px; - background: transparent; - border: 1px solid transparent; - } - .labelStyle { color: red; vertical-align: bottom; height: 20px; line-height: 15px; margin-left: 5px; + } + + .loadButton { + margin-top: 15px; + float: right; + margin-right: 5px; } </ui:style> @@ -58,9 +51,11 @@ <ge:StringEntityModelLabelEditor ui:field="exportDomainName"/> <ge:StringEntityModelLabelEditor ui:field="exportDomainPath"/> <ge:StringEntityModelLabelEditor ui:field="exportDomainDescription"/> - <g:PushButton ui:field="refreshButton" addStyleNames="{style.refreshButton} avmpw_refreshButton_pfly_fix"> - <g:upFace image='{resources.refreshButtonImage}' /> - </g:PushButton> + <g:FlowPanel addStyleNames="{style.providersStyle}"> + <g:FlowPanel addStyleNames="{style.loadButton}"> + <w:UiCommandButton ui:field="loadVmsFromExportDomainButton"/> + </g:FlowPanel> + </g:FlowPanel> </g:FlowPanel> <g:Label ui:field="message" addStyleNames="{style.labelStyle}" /> -- To view, visit https://gerrit.ovirt.org/42096 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I17d884236e738835f909f96662eee7a9d2428378 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Arik Hadas <aha...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches