Idan Shaby has uploaded a new change for review. Change subject: webadmin: Configurable Default for Wipe After Delete per Storage Domain ......................................................................
webadmin: Configurable Default for Wipe After Delete per Storage Domain This patch adds the ability to configure a default value for wipe after delete (WAD) per storage domain via the UI. This way, each new disk will get the default value for WAD from its storage domain. Note that SANWipeAfterDelete will no longer be the WAD default value for disks, but for storage domains. Change-Id: Id0bf6a95eb4b33867de86e99f8cb59eec0d1cdd4 Bug-Url: https://bugzilla.redhat.com/1073448 Signed-off-by: Idan Shaby <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetStorageDomainWipeAfterDeleteQuery.java A backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetStorageDomainWipeAfterDeleteQueryTest.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetStorageDomainWipeAfterDeleteParameters.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportFcpStorageView.ui.xml M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportIscsiStorageView.ui.xml M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/StoragePopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/StoragePopupView.ui.xml 12 files changed, 176 insertions(+), 6 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/26/36526/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetStorageDomainWipeAfterDeleteQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetStorageDomainWipeAfterDeleteQuery.java new file mode 100644 index 0000000..33fdc3d --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetStorageDomainWipeAfterDeleteQuery.java @@ -0,0 +1,19 @@ +package org.ovirt.engine.core.bll; + +import org.ovirt.engine.core.bll.utils.WipeAfterDeleteUtils; +import org.ovirt.engine.core.common.queries.GetStorageDomainWipeAfterDeleteParameters; + +public class GetStorageDomainWipeAfterDeleteQuery<P extends GetStorageDomainWipeAfterDeleteParameters> + extends QueriesCommandBase<P> { + + public GetStorageDomainWipeAfterDeleteQuery(P parameters) { + super(parameters); + } + + @Override protected void executeQueryCommand() { + if (getParameters().getStorageType() != null) { + getQueryReturnValue().setReturnValue( + WipeAfterDeleteUtils.getDefaultWipeAfterDeleteFlag(getParameters().getStorageType())); + } + } +} diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetStorageDomainWipeAfterDeleteQueryTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetStorageDomainWipeAfterDeleteQueryTest.java new file mode 100644 index 0000000..eecc7be --- /dev/null +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetStorageDomainWipeAfterDeleteQueryTest.java @@ -0,0 +1,42 @@ +package org.ovirt.engine.core.bll; + +import org.junit.ClassRule; +import org.junit.experimental.theories.DataPoints; +import org.junit.experimental.theories.Theories; +import org.junit.experimental.theories.Theory; +import org.junit.runner.RunWith; +import org.ovirt.engine.core.common.businessentities.StorageType; +import org.ovirt.engine.core.common.config.ConfigValues; +import org.ovirt.engine.core.common.queries.GetStorageDomainWipeAfterDeleteParameters; +import org.ovirt.engine.core.utils.MockConfigRule; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assume.assumeTrue; +import static org.mockito.Mockito.when; +import static org.ovirt.engine.core.utils.MockConfigRule.mockConfig; + +@RunWith(Theories.class) +public class GetStorageDomainWipeAfterDeleteQueryTest + extends AbstractQueryTest<GetStorageDomainWipeAfterDeleteParameters, + GetStorageDomainWipeAfterDeleteQuery<GetStorageDomainWipeAfterDeleteParameters>> { + + @ClassRule + public static MockConfigRule mcr = new MockConfigRule( + mockConfig(ConfigValues.SANWipeAfterDelete, true), + mockConfig(ConfigValues.UserSessionTimeOutInterval, 60) + ); + + @DataPoints + public static StorageType[] types = StorageType.values(); + + @Theory + public void testExecuteQueryForType(StorageType type) { + assumeTrue(type + " is not a concrete type, skipping", type.isConcreteStorageType()); + + when(getQueryParameters().getStorageType()).thenReturn(type); + getQuery().executeQueryCommand(); + + assertEquals("Wrong 'Wipe After Delete' value returned for Storage Domain type " + type, + type.isBlockDomain(), getQuery().getQueryReturnValue().getReturnValue()); + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetStorageDomainWipeAfterDeleteParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetStorageDomainWipeAfterDeleteParameters.java new file mode 100644 index 0000000..98e9268 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetStorageDomainWipeAfterDeleteParameters.java @@ -0,0 +1,23 @@ +package org.ovirt.engine.core.common.queries; + +import org.ovirt.engine.core.common.businessentities.StorageType; + +public class GetStorageDomainWipeAfterDeleteParameters extends VdcQueryParametersBase { + + private static final long serialVersionUID = 6469435734937894858L; + private StorageType storageType; + + public GetStorageDomainWipeAfterDeleteParameters() {} + + public GetStorageDomainWipeAfterDeleteParameters(StorageType storageType) { + this.storageType = storageType; + } + + public StorageType getStorageType() { + return storageType; + } + + public void setStorageType(StorageType storageType) { + this.storageType = storageType; + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java index 2864d22..16cdb7b 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java @@ -280,6 +280,7 @@ GetIscsiBondById, GetStorageServerConnectionByIscsiBondId, GetNetworksByIscsiBondId, + GetStorageDomainWipeAfterDelete, // Event Notification GetEventSubscribersBySubscriberIdGrouped, diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportFcpStorageView.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportFcpStorageView.ui.xml index 288e5cb..e554d94 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportFcpStorageView.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportFcpStorageView.ui.xml @@ -6,10 +6,11 @@ <ui:style> .containerPanel { - position: absolute !important; + position: relative; width: 100%; bottom: 0; - top: 120px; + top: 0px; + height: 430px; } .containerPanelInner { diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportIscsiStorageView.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportIscsiStorageView.ui.xml index 58b9b06..49fe09c 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportIscsiStorageView.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportIscsiStorageView.ui.xml @@ -7,10 +7,10 @@ <ui:style type="org.ovirt.engine.ui.common.widget.uicommon.storage.ImportIscsiStorageView.WidgetStyle"> .splitLayoutPanel { - position: absolute !important; width: 100%; bottom: 0; - top: 120px; + top: 0px; + height: 440px; } .containerPanel { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java index af2f059..5289a03 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java @@ -108,6 +108,7 @@ import org.ovirt.engine.core.common.queries.GetImagesListByStoragePoolIdParameters; import org.ovirt.engine.core.common.queries.GetLunsByVgIdParameters; import org.ovirt.engine.core.common.queries.GetPermittedStorageDomainsByStoragePoolIdParameters; +import org.ovirt.engine.core.common.queries.GetStorageDomainWipeAfterDeleteParameters; import org.ovirt.engine.core.common.queries.GetStorageDomainsByConnectionParameters; import org.ovirt.engine.core.common.queries.GetStoragePoolsByClusterServiceParameters; import org.ovirt.engine.core.common.queries.GetSupportedCpuListParameters; @@ -2538,6 +2539,16 @@ Frontend.getInstance().runQuery(VdcQueryType.GetPermittedStorageDomainsByStoragePoolId, params, aQuery); } + public void getStorageDomainWipeAfterDelete(AsyncQuery aQuery, StorageType storageType) { + aQuery.converterCallback = new IAsyncConverter<Boolean>() { + @Override public Boolean Convert(Object returnValue, AsyncQuery asyncQuery) { + return returnValue != null ? (Boolean)returnValue : null; + } + }; + GetStorageDomainWipeAfterDeleteParameters params = new GetStorageDomainWipeAfterDeleteParameters(storageType); + Frontend.getInstance().runQuery(VdcQueryType.GetStorageDomainWipeAfterDelete, params, aQuery); + } + public void getAllDataCenterNetworks(AsyncQuery aQuery, Guid storagePoolId) { aQuery.converterCallback = new IAsyncConverter() { @Override 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 a637e33..872ec8b 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 @@ -1215,6 +1215,7 @@ storageDomain.setDescription(model.getDescription().getEntity()); storageDomain.setComment(model.getComment().getEntity()); storageDomain.setStorageFormat(model.getFormat().getSelectedItem()); + storageDomain.setWipeAfterDelete(model.getWipeAfterDelete().getEntity()); if (isNew) { AsyncDataProvider.getInstance().getStorageDomainsByConnection(new AsyncQuery(this, new INewAsyncCallback() { @@ -1343,6 +1344,7 @@ storageDomain.setStorageDomainType(isNew ? storageModel.getRole() : storageDomain.getStorageDomainType()); storageDomain.setStorageName(model.getName().getEntity()); storageDomain.setStorageFormat(model.getFormat().getSelectedItem()); + storageDomain.setWipeAfterDelete(model.getWipeAfterDelete().getEntity()); if (isNew) { AsyncDataProvider.getInstance().getStorageDomainsByConnection(new AsyncQuery(this, new INewAsyncCallback() { @@ -1463,6 +1465,7 @@ storageDomain.setDescription(model.getDescription().getEntity()); storageDomain.setComment(model.getComment().getEntity()); storageDomain.setStorageFormat(model.getFormat().getSelectedItem()); + storageDomain.setWipeAfterDelete(model.getWipeAfterDelete().getEntity()); if (isNew) { @@ -1700,6 +1703,7 @@ storageDomain.setStorageName(model.getName().getEntity()); storageDomain.setDescription(model.getDescription().getEntity()); storageDomain.setComment(model.getComment().getEntity()); + storageDomain.setWipeAfterDelete(model.getWipeAfterDelete().getEntity()); if (isNew) { @@ -1848,6 +1852,7 @@ storageDomain.setStorageName(model.getName().getEntity()); storageDomain.setDescription(model.getDescription().getEntity()); storageDomain.setComment(model.getComment().getEntity()); + storageDomain.setWipeAfterDelete(model.getWipeAfterDelete().getEntity()); if (isNew) { @@ -1923,6 +1928,7 @@ List<IFrontendActionAsyncCallback> callbacks = new LinkedList<IFrontendActionAsyncCallback>(); for (final StorageDomain storageDomain : storageDomains) { + storageDomain.setWipeAfterDelete(model.getWipeAfterDelete().getEntity()); StorageDomainManagementParameter parameters = new StorageDomainManagementParameter(storageDomain.getStorageStaticData()); parameters.setVdsId(hostId); @@ -2094,6 +2100,7 @@ public void importFileStorageAddDomain(ArrayList<StorageDomain> domains) { StorageDomain sdToAdd = Linq.firstOrDefault(domains); + sdToAdd.setWipeAfterDelete(((StorageModel)getWindow()).getWipeAfterDelete().getEntity()); StorageDomainStatic sdsToAdd = sdToAdd.getStorageStaticData(); StorageDomainManagementParameter params = new StorageDomainManagementParameter(sdsToAdd); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModel.java index 9ee6220..931ed86 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModel.java @@ -192,6 +192,16 @@ this.activateDomain = activateDomain; } + private EntityModel<Boolean> wipeAfterDelete; + + public EntityModel<Boolean> getWipeAfterDelete() { + return wipeAfterDelete; + } + + public void setWipeAfterDelete(EntityModel<Boolean> wipeAfterDelete) { + this.wipeAfterDelete = wipeAfterDelete; + } + public StorageModel(StorageModelBehavior behavior) { this.behavior = behavior; @@ -219,6 +229,7 @@ getAvailableStorageItems().getSelectedItemChangedEvent().addListener(this); setActivateDomain(new EntityModel<Boolean>(true)); getActivateDomain().setIsAvailable(false); + setWipeAfterDelete(new EntityModel<>(false)); localFSPath = (String) AsyncDataProvider.getInstance().getConfigValuePreConverted(ConfigurationValues.RhevhLocalFSPath); } @@ -256,6 +267,7 @@ { setSelectedItem(null); setSelectedItem(getAvailableStorageItems().getSelectedItem()); + updateWipeAfterDelete(); } } } @@ -677,6 +689,21 @@ behavior.updateItemsAvailability(); } + private void updateWipeAfterDelete() { + StorageType storageType = getAvailableStorageItems().getSelectedItem().getType(); + if (isNewStorage()) { + AsyncDataProvider.getInstance().getStorageDomainWipeAfterDelete(new AsyncQuery(this, new INewAsyncCallback() { + @Override public void onSuccess(Object model, Object returnValue) { + StorageModel storageModel = (StorageModel)model; + storageModel.getWipeAfterDelete().setEntity((Boolean)returnValue); + } + }), storageType); + } + else { + getWipeAfterDelete().setEntity(getStorage().getWipeAfterDelete()); + } + } + public boolean validate() { ValidationResult result = new NotEmptyValidation().validate(getHost().getSelectedItem()); if (!result.getSuccess()) { diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java index 09f06f1..2b5020e 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java @@ -371,6 +371,9 @@ @DefaultStringValue("Activate Domain in Data Center") String activateDomainLabel(); + @DefaultStringValue("Wipe After Delete") + String wipeAfterDelete(); + @DefaultStringValue("Export Path") String storagePopupNfsPathLabel(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/StoragePopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/StoragePopupView.java index d6a3e15..21e0530 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/StoragePopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/StoragePopupView.java @@ -9,6 +9,7 @@ import org.ovirt.engine.ui.common.idhandler.WithElementId; import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView; import org.ovirt.engine.ui.common.widget.Align; +import org.ovirt.engine.ui.common.widget.dialog.AdvancedParametersExpander; import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel; import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor; import org.ovirt.engine.ui.common.widget.editor.generic.EntityModelCheckBoxEditor; @@ -101,6 +102,19 @@ FlowPanel specificStorageTypePanel; @UiField + @Ignore + AdvancedParametersExpander wipeAfterDeleteExpander; + + @UiField + @Ignore + FlowPanel wipeAfterDeleteExpanderContent; + + @UiField + @Path(value = "wipeAfterDelete.entity") + @WithElementId("wipeAfterDelete") + EntityModelCheckBoxEditor wipeAfterDeleteEditor; + + @UiField Image datacenterAlertIcon; @SuppressWarnings("rawtypes") @@ -115,6 +129,7 @@ super(eventBus, resources); initListBoxEditors(constants); initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); + initWipeAfterDeleteExpander(); ViewIdHandler.idHandler.generateAndSetIds(this); asWidget().enableResizeSupport(true); localize(constants); @@ -191,6 +206,7 @@ formatListEditor.setLabelStyleName(style.label()); formatListEditor.addContentWidgetStyleName(style.formatContentWidget()); activateDomainEditor.addContentWidgetStyleName(style.activateDomainEditor()); + wipeAfterDeleteExpanderContent.setStyleName(style.wipeAfterDeleteExpanderContent()); } void localize(ApplicationConstants constants) { @@ -202,6 +218,7 @@ formatListEditor.setLabel(constants.storagePopupFormatTypeLabel()); hostListEditor.setLabel(constants.storagePopupHostLabel()); activateDomainEditor.setLabel(constants.activateDomainLabel()); + wipeAfterDeleteEditor.setLabel(constants.wipeAfterDelete()); } @Override @@ -224,6 +241,10 @@ datacenterAlertIcon.setTitle(storageModel.getDataCenterAlert().getEntity()); } }); + } + + private void initWipeAfterDeleteExpander() { + wipeAfterDeleteExpander.initWithContent(wipeAfterDeleteExpanderContent.getElement()); } @SuppressWarnings("unchecked") @@ -307,6 +328,8 @@ String storageTypeLabel(); String storageDomainTypeLabel(); + + String wipeAfterDeleteExpanderContent(); } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/StoragePopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/StoragePopupView.ui.xml index 9e1463f..8e4c4e0 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/StoragePopupView.ui.xml +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/StoragePopupView.ui.xml @@ -7,6 +7,7 @@ <ui:with field='resources' type='org.ovirt.engine.ui.webadmin.ApplicationResources' /> <ui:style type="org.ovirt.engine.ui.webadmin.section.main.view.popup.storage.StoragePopupView.WidgetStyle"> .content { + overflow-x: hidden; } .formatContentWidget { @@ -31,6 +32,10 @@ font-weight: bold; font-family: Arial,sans-serif; line-height: 30px; + } + + .wipeAfterDeleteEditor { + width: 437px; } .nameEditor, @@ -75,10 +80,14 @@ font-weight: bold; } + .wipeAfterDeleteExpanderContent { + margin-left: 15px; + display: none; + } + .specificStorageTypePanel { width: 100%; margin-top: 8px; - overflow-x: hidden; } .dataCenterAlertIcon { @@ -87,7 +96,7 @@ </ui:style> - <d:SimpleDialogPanel width="760px" height="635px"> + <d:SimpleDialogPanel width="760px" height="665px"> <d:content> <g:FlowPanel addStyleNames="{style.content}"> <g:HorizontalPanel> @@ -106,6 +115,10 @@ </g:HorizontalPanel> <e:ListModelListBoxEditor ui:field="hostListEditor" addStyleNames="{style.hostListEditor}"/> <g:FlowPanel ui:field="specificStorageTypePanel" addStyleNames="{style.specificStorageTypePanel}"></g:FlowPanel> + <d:AdvancedParametersExpander ui:field="wipeAfterDeleteExpander"/> + <g:FlowPanel ui:field="wipeAfterDeleteExpanderContent"> + <ge:EntityModelCheckBoxEditor ui:field="wipeAfterDeleteEditor" addStyleNames="{style.wipeAfterDeleteEditor}"/> + </g:FlowPanel> </g:FlowPanel> </d:content> </d:SimpleDialogPanel> -- To view, visit http://gerrit.ovirt.org/36526 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id0bf6a95eb4b33867de86e99f8cb59eec0d1cdd4 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Idan Shaby <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
