Omer Frenkel has uploaded a new change for review. Change subject: core,webadmin: show list of changed fields when updating running vm ......................................................................
core,webadmin: show list of changed fields when updating running vm When updating running vm, a msg is shown if some of the fields can be updated only after restart. This is changed to list those fields for the user. Change-Id: Idf13a19d1b193037226cb49bc6c1e8cefc0553b8 Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1119791 Signed-off-by: Omer Frenkel <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQuery.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQueryTest.java M backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ObjectIdentityChecker.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmNextRunConfigurationWidget.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmNextRunConfigurationWidget.ui.xml M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNextRunConfigurationModel.java M frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmNextRunConfigurationPopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmNextRunConfigurationPopupView.java 13 files changed, 97 insertions(+), 12 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/46/33046/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQuery.java index 5c2982d..5a1e69b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQuery.java @@ -1,11 +1,17 @@ package org.ovirt.engine.core.bll; +import org.ovirt.engine.core.common.businessentities.EditableDeviceOnVmStatusField; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.VmStatic; import org.ovirt.engine.core.common.queries.GetVmUpdatesOnNextRunExistsParameters; +import org.ovirt.engine.core.common.utils.Pair; import org.ovirt.engine.core.common.utils.SimpleDependecyInjector; +import org.ovirt.engine.core.common.utils.VmDeviceType; import org.ovirt.engine.core.common.utils.customprop.VmPropertiesUtils; + +import java.util.ArrayList; +import java.util.List; public class GetVmUpdatesOnNextRunExistsQuery<P extends GetVmUpdatesOnNextRunExistsParameters> extends QueriesCommandBase<P>{ @@ -34,7 +40,17 @@ vmPropertiesUtils.separateCustomPropertiesToUserAndPredefined( dstVm.getVdsGroupCompatibilityVersion(), dstStatic); - setReturnValue(!VmHandler.isUpdateValid(srcStatic, dstStatic, VMStatus.Up) || - !VmHandler.isUpdateValidForVmDevices(srcVm.getId(), VMStatus.Up, getParameters().getUpdateVmParameters())); + List<String> result = new ArrayList<>(VmHandler.getChangedFieldsForStatus(srcStatic, dstStatic, VMStatus.Up)); + + for (Pair<EditableDeviceOnVmStatusField, Boolean> device : + VmHandler.getVmDevicesFieldsToUpdateOnNextRun(srcVm.getId(), VMStatus.Up, getParameters().getUpdateVmParameters())) { + if (device.getFirst().type() != VmDeviceType.UNKNOWN) { + result.add(device.getFirst().type().getName()); + } else { + result.add(device.getFirst().generalType().name()); + } + } + + setReturnValue(result); } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java index c6a130a..75512d9 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java @@ -145,6 +145,10 @@ return mUpdateVmsStatic.IsUpdateValid(source, destination, status); } + public static List<String> getChangedFieldsForStatus(VmStatic source, VmStatic destination, VMStatus status) { + return mUpdateVmsStatic.getChangedFieldsForStatus(source, destination, status); + } + public static boolean isUpdateValid(VmStatic source, VmStatic destination, VMStatus status, boolean hotsetEnabled) { return mUpdateVmsStatic.IsUpdateValid(source, destination, status, hotsetEnabled); } @@ -816,6 +820,10 @@ Guid vmId, VMStatus vmStatus, Object objectWithEditableDeviceFields) { List<Pair<EditableDeviceOnVmStatusField, Boolean>> fieldList = new ArrayList<>(); + if (objectWithEditableDeviceFields == null) { + return fieldList; + } + List<Pair<EditableDeviceOnVmStatusField , Field>> pairList = BaseHandler.extractAnnotatedFields( EditableDeviceOnVmStatusField.class, objectWithEditableDeviceFields.getClass()); diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQueryTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQueryTest.java index 5db0e3b..aaefb4a 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQueryTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQueryTest.java @@ -12,6 +12,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; +import org.ovirt.engine.core.common.backendinterfaces.BaseHandler; import org.ovirt.engine.core.common.businessentities.UsbPolicy; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VmStatic; @@ -19,6 +20,8 @@ import org.ovirt.engine.core.common.utils.SimpleDependecyInjector; import org.ovirt.engine.core.common.utils.customprop.VmPropertiesUtils; import org.ovirt.engine.core.compat.Version; + +import java.util.List; @RunWith(MockitoJUnitRunner.class) public class GetVmUpdatesOnNextRunExistsQueryTest extends AbstractQueryTest<GetVmUpdatesOnNextRunExistsParameters, GetVmUpdatesOnNextRunExistsQuery<? extends GetVmUpdatesOnNextRunExistsParameters>> { @@ -56,7 +59,7 @@ getQuery().executeQueryCommand(); - assertFalse((boolean) getQuery().getQueryReturnValue().getReturnValue()); + assertTrue(((List<String>) getQuery().getQueryReturnValue().getReturnValue()).isEmpty()); } @Test @@ -71,7 +74,7 @@ getQuery().executeQueryCommand(); - assertTrue((boolean) getQuery().getQueryReturnValue().getReturnValue()); + assertFalse(((List<String>) getQuery().getQueryReturnValue().getReturnValue()).isEmpty()); } @Test @@ -105,7 +108,7 @@ getQuery().executeQueryCommand(); - assertTrue((boolean) getQuery().getQueryReturnValue().getReturnValue()); + assertFalse(((List<String>) getQuery().getQueryReturnValue().getReturnValue()).isEmpty()); } @Test @@ -139,6 +142,6 @@ getQuery().executeQueryCommand(); - assertFalse((boolean) getQuery().getQueryReturnValue().getReturnValue()); + assertTrue(((List<String>) getQuery().getQueryReturnValue().getReturnValue()).isEmpty()); } } diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ObjectIdentityChecker.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ObjectIdentityChecker.java index d032d36..d422842 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ObjectIdentityChecker.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ObjectIdentityChecker.java @@ -180,6 +180,19 @@ return true; } + public final List<String> getChangedFieldsForStatus(Object source, Object destination, Enum<?> status) { + List<String> fields = new ArrayList<>(); + if (source.getClass() != destination.getClass()) { + return fields; + } + for (String fieldName : GetChangedFields(source, destination)) { + if (!IsFieldUpdatable(status, fieldName, null, false)) { + fields.add(fieldName); + } + } + return fields; + } + public final boolean IsFieldsUpdated(Object source, Object destination, Iterable<String> fields) { List<String> changedFields = GetChangedFields(source, destination); for (String field : fields) { @@ -218,7 +231,7 @@ * The status. */ private static void LogError(String name, Enum<?> status) { - log.errorFormat("Field {0} can not be updated when status is {1}", name, status); + log.warnFormat("Field {0} can not be updated when status is {1}", name, status); } private static final Log log = LogFactory.getLog(ObjectIdentityChecker.class); 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 ef64e6e..084e16d 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 @@ -1919,4 +1919,7 @@ @DefaultStringValue("SPICE-HTML5 does not support SPICE Proxy.") String spiceHtml5DoesntSupportSpiceProxy(); + + @DefaultStringValue("Changed fields list") + String changedFieldsList(); } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java index bacfa8b..ec768e1 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java @@ -145,7 +145,7 @@ @DefaultMessage("Policy of assigning serial numbers to running VMs. Can be Host''s UUID, Vm''s UUID or any custom value.") String serialNumberInfo(); - @DefaultMessage("Some of the changes will be applied after the NEXT RESTART.") + @DefaultMessage("Some of the changes will be applied only on the vm next start.") String nextRunConfigurationExists(); @DefaultMessage("The following values can be applied immediately:<br/>- cpu") diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmNextRunConfigurationWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmNextRunConfigurationWidget.java index d86fb46..9293d02 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmNextRunConfigurationWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmNextRunConfigurationWidget.java @@ -5,6 +5,7 @@ import org.ovirt.engine.ui.common.CommonApplicationTemplates; import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; import org.ovirt.engine.ui.common.widget.Align; +import org.ovirt.engine.ui.common.widget.dialog.AdvancedParametersExpander; import org.ovirt.engine.ui.common.widget.editor.generic.EntityModelCheckBoxEditor; import org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractModelBoundPopupWidget; import org.ovirt.engine.ui.uicommonweb.models.vms.VmNextRunConfigurationModel; @@ -39,12 +40,24 @@ @Ignore HTML message2; + @UiField + @Ignore + HTML changedFields; + @UiField(provided = true) @Path(value = "applyCpuLater.entity") EntityModelCheckBoxEditor applyCpuLaterEditor; @UiField FlowPanel cpuPanel; + + @UiField + @Ignore + AdvancedParametersExpander changedFieldsExpander; + + @UiField + @Ignore + FlowPanel changedFieldsExpanderContent; private final Driver driver = GWT.create(Driver.class); @@ -54,6 +67,7 @@ localize(constants, messages, templates); ViewIdHandler.idHandler.generateAndSetIds(this); driver.initialize(this); + changedFieldsExpander.initWithContent(changedFieldsExpanderContent.getElement()); } void initEditors() { @@ -64,6 +78,9 @@ message1.setHTML(listItem(messages.nextRunConfigurationExists(), templates)); message2.setHTML(listItem(messages.nextRunConfigurationCanBeAppliedImmediately(), templates)); applyCpuLaterEditor.setLabel(constants.applyLater()); + + changedFieldsExpander.setTitleWhenExpended(constants.changedFieldsList()); + changedFieldsExpander.setTitleWhenCollapsed(constants.changedFieldsList()); } private SafeHtml listItem(String msg, CommonApplicationTemplates templates) { @@ -74,6 +91,7 @@ public void edit(VmNextRunConfigurationModel object) { driver.edit(object); cpuPanel.setVisible(object.isCpuPluggable()); + changedFields.setHTML(SafeHtmlUtils.fromSafeConstant(object.getChangedFields())); } @Override diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmNextRunConfigurationWidget.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmNextRunConfigurationWidget.ui.xml index 016f9b1..77bb54d 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmNextRunConfigurationWidget.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmNextRunConfigurationWidget.ui.xml @@ -5,13 +5,24 @@ xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic"> <ui:style> + .verticalPanel>* { + display: block; + clear: both; + } .contentWidgets { width: 97%; + } + .sectionPanel { + margin-bottom: 20px; } </ui:style> <g:FlowPanel> <g:HTML ui:field="message1" /> + <d:AdvancedParametersExpander ui:field="changedFieldsExpander" addStyleNames="{style.verticalPanel}"/> + <g:FlowPanel ui:field="changedFieldsExpanderContent" addStyleNames="{style.sectionPanel}"> + <g:HTML ui:field="changedFields" /> + </g:FlowPanel> <g:FlowPanel ui:field="cpuPanel"> <g:HTML ui:field="message2" /> <ge:EntityModelCheckBoxEditor ui:field="applyCpuLaterEditor" addStyleNames="{style.contentWidgets}"/> diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java index c48618d..841e1e1 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java @@ -1157,11 +1157,13 @@ new INewAsyncCallback() { @Override public void onSuccess(Object thisModel, Object returnValue) { - if (((VdcQueryReturnValue)returnValue).<Boolean> getReturnValue()) { + List<String> changedFields = ((VdcQueryReturnValue)returnValue).<List<String>> getReturnValue(); + if (!changedFields.isEmpty()) { VmNextRunConfigurationModel confirmModel = new VmNextRunConfigurationModel(); confirmModel.setTitle(ConstantsManager.getInstance().getConstants().editNextRunConfigurationTitle()); confirmModel.setHelpTag(HelpTag.edit_next_run_configuration); confirmModel.setHashName("edit_next_run_configuration"); //$NON-NLS-1$ + confirmModel.setChangedFields(changedFields.toString()); confirmModel.setCpuPluggable(selectedItem.getCpuPerSocket() == gettempVm().getCpuPerSocket() && selectedItem.getNumOfSockets() != gettempVm().getNumOfSockets()); confirmModel.getCommands().add(new UICommand("updateExistingVm", UserPortalListModel.this) //$NON-NLS-1$ diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java index ebb3299..21c393d 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java @@ -2023,11 +2023,13 @@ new INewAsyncCallback() { @Override public void onSuccess(Object thisModel, Object returnValue) { - if (((VdcQueryReturnValue)returnValue).<Boolean> getReturnValue()) { + List<String> changedFields = ((VdcQueryReturnValue)returnValue).<List<String>> getReturnValue(); + if (!changedFields.isEmpty()) { VmNextRunConfigurationModel confirmModel = new VmNextRunConfigurationModel(); confirmModel.setTitle(ConstantsManager.getInstance().getConstants().editNextRunConfigurationTitle()); confirmModel.setHelpTag(HelpTag.edit_next_run_configuration); confirmModel.setHashName("edit_next_run_configuration"); //$NON-NLS-1$ + confirmModel.setChangedFields(changedFields.toString()); confirmModel.setCpuPluggable(selectedItem.getCpuPerSocket() == getcurrentVm().getCpuPerSocket() && selectedItem.getNumOfSockets() != getcurrentVm().getNumOfSockets()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNextRunConfigurationModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNextRunConfigurationModel.java index 7776258..ec81e92 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNextRunConfigurationModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNextRunConfigurationModel.java @@ -7,6 +7,7 @@ private EntityModel<Boolean> applyCpuLater; private boolean cpuPluggable; + private String changedFields; public VmNextRunConfigurationModel() { setApplyCpuLater(new EntityModel<Boolean>(false)); @@ -27,4 +28,12 @@ public void setCpuPluggable(boolean cpuPluggable) { this.cpuPluggable = cpuPluggable; } + + public String getChangedFields() { + return changedFields; + } + + public void setChangedFields(String changedFields) { + this.changedFields = changedFields; + } } diff --git a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmNextRunConfigurationPopupView.java b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmNextRunConfigurationPopupView.java index 8622615..74bd0db 100644 --- a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmNextRunConfigurationPopupView.java +++ b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmNextRunConfigurationPopupView.java @@ -24,7 +24,7 @@ @Inject public VmNextRunConfigurationPopupView(EventBus eventBus, CommonApplicationResources resources, ApplicationConstants constants, ApplicationMessages messages, CommonApplicationTemplates templates) { - super(eventBus, resources, new VmNextRunConfigurationWidget(constants, messages, templates), "400px", "200px"); //$NON-NLS-1$ //$NON-NLS-2$ + super(eventBus, resources, new VmNextRunConfigurationWidget(constants, messages, templates), "400px", "300px"); //$NON-NLS-1$ //$NON-NLS-2$ ViewIdHandler.idHandler.generateAndSetIds(this); } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmNextRunConfigurationPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmNextRunConfigurationPopupView.java index 36304ad..fc7bd26 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmNextRunConfigurationPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmNextRunConfigurationPopupView.java @@ -24,7 +24,7 @@ @Inject public VmNextRunConfigurationPopupView(EventBus eventBus, CommonApplicationResources resources, ApplicationConstants constants, ApplicationMessages messages, CommonApplicationTemplates templates) { - super(eventBus, resources, new VmNextRunConfigurationWidget(constants, messages, templates), "400px", "200px"); //$NON-NLS-1$ //$NON-NLS-2$ + super(eventBus, resources, new VmNextRunConfigurationWidget(constants, messages, templates), "400px", "300px"); //$NON-NLS-1$ //$NON-NLS-2$ ViewIdHandler.idHandler.generateAndSetIds(this); } } -- To view, visit http://gerrit.ovirt.org/33046 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idf13a19d1b193037226cb49bc6c1e8cefc0553b8 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Omer Frenkel <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
