Federico Simoncelli has uploaded a new change for review. Change subject: [wip] frontend: add the export glance image support ......................................................................
[wip] frontend: add the export glance image support Change-Id: If5ec1bd1de705233c3a0baf26e5f2a4c0a21645a Signed-off-by: Federico Simoncelli <fsimo...@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/disks/DiskListModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ExportImageModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DiskModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/ImportExportImagePopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDiskView.java 7 files changed, 155 insertions(+), 3 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/16420/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 b6a89cc..62e367d 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 @@ -648,6 +648,9 @@ @DefaultStringValue("Scan Alignment") String getDiskAlignment(); + @DefaultStringValue("Upload") + String uploadDisk(); + @DefaultStringValue("Data Center") String dataCenter(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskListModel.java index aba8be2..e804e75 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/disks/DiskListModel.java @@ -32,6 +32,7 @@ import org.ovirt.engine.ui.uicommonweb.models.configure.PermissionListModel; import org.ovirt.engine.ui.uicommonweb.models.quota.ChangeQuotaItemModel; import org.ovirt.engine.ui.uicommonweb.models.quota.ChangeQuotaModel; +import org.ovirt.engine.ui.uicommonweb.models.storage.ExportImageModel; import org.ovirt.engine.ui.uicommonweb.models.storage.SanStorageModel; import org.ovirt.engine.ui.uicommonweb.models.templates.CopyDiskModel; import org.ovirt.engine.ui.uicommonweb.models.vms.AbstractDiskModel; @@ -109,6 +110,16 @@ privateScanAlignmentCommand = value; } + private UICommand uploadCommand; + + public UICommand getUploadCommand() { + return uploadCommand; + } + + public void setUploadCommand(UICommand uploadCommand) { + this.uploadCommand = uploadCommand; + } + private UICommand privateChangeQuotaCommand; public UICommand getChangeQuotaCommand() @@ -178,6 +189,7 @@ setChangeQuotaCommand(new UICommand("changeQuota", this)); //$NON-NLS-1$ setCopyCommand(new UICommand("Copy", this)); //$NON-NLS-1$ setScanAlignmentCommand(new UICommand("Check Alignment", this)); //$NON-NLS-1$ + setUploadCommand(new UICommand("Upload", this)); //$NON-NLS-1$ updateActionAvailability(); @@ -318,6 +330,32 @@ } }, this); + } + + private void upload() + { + @SuppressWarnings("unchecked") + ArrayList<DiskImage> disks = (ArrayList<DiskImage>) getSelectedItems(); + + if (disks == null || getWindow() != null) + { + return; + } + + ExportImageModel model = new ExportImageModel(); + setWindow(model); + + model.setTitle(ConstantsManager.getInstance().getConstants().uploadImagesTitle()); + model.setHashName("upload_disks"); //$NON-NLS-1$ + model.setEntity(this); + model.init(disks); + + UICommand cancelCommand = new UICommand("Cancel", this); //$NON-NLS-1$ + cancelCommand.setTitle(ConstantsManager.getInstance().getConstants().cancel()); + cancelCommand.setIsCancel(true); + + model.setCancelCommand(cancelCommand); + model.getCommands().add(cancelCommand); } private void changeQuota() @@ -593,6 +631,10 @@ { scanAlignment(); } + else if (command == getUploadCommand()) + { + upload(); + } else if (StringHelper.stringsEqual(command.getName(), "Cancel")) //$NON-NLS-1$ { cancel(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ExportImageModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ExportImageModel.java new file mode 100644 index 0000000..f44106c --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ExportImageModel.java @@ -0,0 +1,87 @@ +package org.ovirt.engine.ui.uicommonweb.models.storage; + +import org.ovirt.engine.core.common.action.ExportRepoImageParameters; +import org.ovirt.engine.core.common.action.VdcActionParametersBase; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.DiskImage; +import org.ovirt.engine.core.common.businessentities.StorageDomain; +import org.ovirt.engine.core.common.businessentities.StorageType; +import org.ovirt.engine.core.common.businessentities.comparators.NameableComparator; +import org.ovirt.engine.ui.frontend.Frontend; +import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.models.EntityModel; +import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult; +import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class ExportImageModel extends ImportExportImageModel { + + public void init(List<DiskImage> diskImages) { + setDiskImages(diskImages); + updateStorageDomains(null); + } + + public void setDiskImages(List<DiskImage> diskImages) { + ArrayList<EntityModel> entities = new ArrayList<EntityModel>(); + for (DiskImage i : diskImages) { + entities.add(new EntityModel(i)); + } + setEntities(entities); + } + + @Override + protected void onStorageDomainsList(List<StorageDomain> storageDomains) { + List<StorageDomain> availableStorageDomains = new ArrayList<StorageDomain>(); + + // Take only GLANCE domains + for (StorageDomain storageDomainItem : storageDomains) { + if (storageDomainItem.getStorageType() == StorageType.GLANCE) { + availableStorageDomains.add(storageDomainItem); + } + } + + // Sorting by name + Collections.sort(availableStorageDomains, new NameableComparator()); + + getStorageDomain().setItems(availableStorageDomains); + getStorageDomain().setIsEmpty(availableStorageDomains.isEmpty()); + } + + @Override + public void executeCommand(UICommand command) + { + super.executeCommand(command); + + startProgress(null); + + ArrayList<VdcActionParametersBase> actionParameters = new ArrayList<VdcActionParametersBase>(); + + for (EntityModel entity : getEntities()) { + DiskImage diskImage = (DiskImage) entity.getEntity(); + ExportRepoImageParameters exportParameters = new ExportRepoImageParameters(diskImage.getImageId()); + + // source + exportParameters.setStoragePoolId(diskImage.getStoragePoolId()); + exportParameters.setStorageDomainId(diskImage.getStorageIds().get(0)); + exportParameters.setImageGroupID(diskImage.getId()); + + // destination + exportParameters.setDestinationDomainId(((StorageDomain) getStorageDomain().getSelectedItem()).getId()); + + actionParameters.add(exportParameters); + } + + Frontend.RunMultipleAction(VdcActionType.ExportRepoImage, actionParameters, + new IFrontendMultipleActionAsyncCallback() { + @Override + public void executed(FrontendMultipleActionAsyncResult result) { + ImportExportImageModel model = (ImportExportImageModel) result.getState(); + model.stopProgress(); + model.cancel(); + } + }, this); + } +} diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java index a781ad1..ddb0c2b 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java @@ -535,6 +535,9 @@ @DefaultStringValue("Download Image(s)") String downloadImagesTitle(); + @DefaultStringValue("Upload Image(s)") + String uploadImagesTitle(); + @DefaultStringValue("Snapshots") String snapshotsTitle(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DiskModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DiskModule.java index aeaa3f2..7433fd3 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DiskModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DiskModule.java @@ -27,6 +27,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.PermissionsPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.quota.ChangeQuotaPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.storage.DisksAllocationPopupPresenterWidget; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.storage.ImportExportImagePopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.VmDiskPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.VmDiskRemovePopupPresenterWidget; @@ -45,7 +46,8 @@ final Provider<VmDiskPopupPresenterWidget> newPopupProvider, final Provider<VmDiskRemovePopupPresenterWidget> removeConfirmPopupProvider, final Provider<DisksAllocationPopupPresenterWidget> moveOrCopyPopupProvider, - final Provider<ChangeQuotaPopupPresenterWidget> changeQutoaPopupProvider) { + final Provider<ChangeQuotaPopupPresenterWidget> changeQutoaPopupProvider, + final Provider<ImportExportImagePopupPresenterWidget> importExportImagePopupPresenterWidgetProvider) { return new MainTabModelProvider<Disk, DiskListModel>(ginjector, DiskListModel.class) { @Override @@ -53,12 +55,13 @@ UICommand lastExecutedCommand, Model windowModel) { if (lastExecutedCommand == getModel().getNewCommand()) { return newPopupProvider.get(); - } - else if (lastExecutedCommand == getModel().getMoveCommand() + } else if (lastExecutedCommand == getModel().getMoveCommand() || lastExecutedCommand == getModel().getCopyCommand()) { return moveOrCopyPopupProvider.get(); } else if (lastExecutedCommand == getModel().getChangeQuotaCommand()) { return changeQutoaPopupProvider.get(); + } else if (lastExecutedCommand == getModel().getUploadCommand()) { + return importExportImagePopupPresenterWidgetProvider.get(); } else { return super.getModelPopup(source, lastExecutedCommand, windowModel); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/ImportExportImagePopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/ImportExportImagePopupView.java index 44ea31a..30bdcf8 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/ImportExportImagePopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/ImportExportImagePopupView.java @@ -9,6 +9,7 @@ import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.SimplePanel; import com.google.inject.Inject; +import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.core.common.businessentities.RepoImage; import org.ovirt.engine.core.common.businessentities.StorageDomain; @@ -106,6 +107,8 @@ public String getText(Object image) { if (image instanceof RepoImage) { return ((RepoImage) image).getRepoImageTitle(); + } else if (image instanceof DiskImage) { + return ((DiskImage) image).getDiskAlias(); } return "(Unknown)"; //$NON-NLS-1$ } @@ -115,6 +118,8 @@ public String getText(Object image) { if (image instanceof RepoImage) { return ((RepoImage) image).getFileType().toString(); + } else if (image instanceof DiskImage) { + return "Disk"; //$NON-NLS-1$ } return "(Unknown)"; //$NON-NLS-1$ } @@ -124,6 +129,8 @@ protected Long getRawValue(EntityModel object) { if (object.getEntity() instanceof RepoImage) { return ((RepoImage) (object.getEntity())).getSize(); + } else if (object.getEntity() instanceof DiskImage) { + return ((DiskImage) (object.getEntity())).getSizeInGigabytes(); } return null; } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDiskView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDiskView.java index ff0dd41..8359b7f 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDiskView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDiskView.java @@ -197,6 +197,13 @@ } }); + getTable().addActionButton(new WebAdminButtonDefinition<Disk>(constants.uploadDisk()) { + @Override + protected UICommand resolveCommand() { + return getMainModel().getUploadCommand(); + } + }); + getTable().addActionButton(new WebAdminButtonDefinition<Disk>(constants.assignQuota()) { @Override protected UICommand resolveCommand() { -- To view, visit http://gerrit.ovirt.org/16420 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If5ec1bd1de705233c3a0baf26e5f2a4c0a21645a Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Federico Simoncelli <fsimo...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches