Kanagaraj M has uploaded a new change for review.

Change subject: webadmin: adding activities colume to Bricks tab
......................................................................

webadmin: adding activities colume to Bricks tab

Added a new activities column to Bricks table.
This is similar to the Actvities colume in the volumes tab.
But the cell in this column is visible only if the task
is of type REMOVE_BRICK. Added new icons to show the
different stages of remove brick operation.

All the brick removal related(stop/commit) operations are moved to
the row. The same actions will be available in the volume row as well.

Change-Id: I820c8b2e2e948d1c2ce0811d2d5a78784eeafc2b
Signed-off-by: Kanagaraj M <kmayi...@redhat.com>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/volumes/VolumeListModel.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/ApplicationResources.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityColumn.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityCompositeCell.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityStatusCell.java
A 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_commit_required.png
A 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_failed.png
A 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_running.png
A 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_stopped.png
12 files changed, 149 insertions(+), 30 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/09/20009/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/volumes/VolumeListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/volumes/VolumeListModel.java
index 75be63b..b937612 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/volumes/VolumeListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/volumes/VolumeListModel.java
@@ -142,6 +142,16 @@
         this.optimizeForVirtStoreCommand = optimizeForVirtStoreCommand;
     }
 
+    private VolumeBrickListModel brickListModel;
+
+    public VolumeBrickListModel getBrickListModel() {
+        return this.brickListModel;
+    }
+
+    public void setBrickListModel(VolumeBrickListModel brickListModel) {
+        this.brickListModel = brickListModel;
+    }
+
     public VolumeListModel() {
         setTitle(ConstantsManager.getInstance().getConstants().volumesTitle());
 
@@ -172,10 +182,13 @@
     @Override
     protected void initDetailModels() {
         super.initDetailModels();
+
+        setBrickListModel(new VolumeBrickListModel());
+
         ObservableCollection<EntityModel> list = new 
ObservableCollection<EntityModel>();
         list.add(new VolumeGeneralModel());
         list.add(new VolumeParameterListModel());
-        list.add(new VolumeBrickListModel());
+        list.add(getBrickListModel());
         list.add(new PermissionListModel());
         list.add(new VolumeEventListModel());
         setDetailModels(list);
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 685b1ae..475aa9c 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
@@ -2642,9 +2642,6 @@
     @DefaultStringValue("Remove")
     String removeBricksBrick();
 
-    @DefaultStringValue("Start")
-    String removeBricksStart();
-
     @DefaultStringValue("Stop")
     String removeBricksStop();
 
@@ -3273,6 +3270,18 @@
     @DefaultStringValue("Cluster :")
     String rebalanceClusterVolume();
 
+    @DefaultStringValue("Brick removal in progress")
+    String removeBrickInProgress();
+
+    @DefaultStringValue("Brick removal stopped")
+    String removeBrickStopped();
+
+    @DefaultStringValue("Brick removal failed")
+    String removeBrickFailed();
+
+    @DefaultStringValue("Migration completed, pending commit")
+    String removeBrickCommitRequired();
+
     //Volume Rebalance Status Table Columns
     @DefaultStringValue("Host")
     String rebalanceSessionHost();
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationResources.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationResources.java
index 8cbea0b..22e148e 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationResources.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationResources.java
@@ -393,4 +393,17 @@
 
     @Source("images/glusterRebalance/rebalance_stopped.png")
     ImageResource rebalanceStoppped();
+
+    @Source("images/glusterRebalance/remove_brick_running.png")
+    ImageResource removeBrickRunning();
+
+    @Source("images/glusterRebalance/remove_brick_stopped.png")
+    ImageResource removeBrickStopped();
+
+    @Source("images/glusterRebalance/remove_brick_failed.png")
+    ImageResource removeBrickFailed();
+
+    @Source("images/glusterRebalance/remove_brick_commit_required.png")
+    ImageResource removeBrickCommitRequired();
+
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java
index c16f1c2..b8f7167 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java
@@ -90,6 +90,7 @@
 
 
         MenuCell<GlusterTaskSupport> rebalanceMenuCell = 
getRebalanceActivityMenu(constants);
+        MenuCell<GlusterTaskSupport> removeBricksMenuCell = 
getRemoveBrickActivityMenu(constants);
         List<HasCell<GlusterTaskSupport, ?>> list = new 
ArrayList<HasCell<GlusterTaskSupport, ?>>();
         list.add(new VolumeActivityStatusColumn<GlusterTaskSupport>());
         list.add(new Column<GlusterTaskSupport, GlusterTaskSupport>(new 
VolumeActivitySeperatorCell<GlusterTaskSupport>()) {
@@ -97,9 +98,14 @@
             public GlusterTaskSupport getValue(GlusterTaskSupport object) {
                 return object;
             }
-
         });
         list.add(new Column<GlusterTaskSupport, 
GlusterTaskSupport>(rebalanceMenuCell) {
+            @Override
+            public GlusterTaskSupport getValue(GlusterTaskSupport object) {
+                return object;
+            }
+        });
+        list.add(new Column<GlusterTaskSupport, 
GlusterTaskSupport>(removeBricksMenuCell) {
             @Override
             public GlusterTaskSupport getValue(GlusterTaskSupport object) {
                 return object;
@@ -160,4 +166,18 @@
         menuCell.addMenuItem(constants.stopRebalance(), 
getMainModel().getStopRebalanceCommand());
         return menuCell;
     }
+
+    private MenuCell<GlusterTaskSupport> 
getRemoveBrickActivityMenu(ApplicationConstants constants) {
+        MenuCell<GlusterTaskSupport> menuCell = new 
MenuCell<GlusterTaskSupport>() {
+            @Override
+            protected boolean isVisible(GlusterTaskSupport value) {
+                return value.getAsyncTask().getType() == 
GlusterTaskType.REMOVE_BRICK;
+            }
+        };
+        menuCell.addMenuItem(constants.removeBricksStop(), 
getMainModel().getBrickListModel()
+                .getStopRemoveBricksCommand());
+        menuCell.addMenuItem(constants.removeBricksCommit(), 
getMainModel().getBrickListModel()
+                .getCommitRemoveBricksCommand());
+        return menuCell;
+    }
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
index 4ce0af4..9dd8fef 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
@@ -1,14 +1,14 @@
 package org.ovirt.engine.ui.webadmin.section.main.view.tab.gluster;
 
-import java.util.LinkedList;
+import java.util.ArrayList;
 import java.util.List;
 
+import org.ovirt.engine.core.common.asynctasks.gluster.GlusterTaskType;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterTaskSupport;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
 import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
 import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider;
-import org.ovirt.engine.ui.common.widget.action.ActionButtonDefinition;
-import org.ovirt.engine.ui.common.widget.action.CommandLocation;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.models.gluster.VolumeBrickListModel;
@@ -17,10 +17,16 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumeBrickPresenter;
 import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView;
 import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition;
-import 
org.ovirt.engine.ui.webadmin.widget.action.WebAdminMenuBarButtonDefinition;
 import org.ovirt.engine.ui.webadmin.widget.table.column.BrickStatusColumn;
+import org.ovirt.engine.ui.webadmin.widget.table.column.MenuCell;
+import org.ovirt.engine.ui.webadmin.widget.table.column.VolumeActivityColumn;
+import 
org.ovirt.engine.ui.webadmin.widget.table.column.VolumeActivityCompositeCell;
+import 
org.ovirt.engine.ui.webadmin.widget.table.column.VolumeActivitySeperatorCell;
+import 
org.ovirt.engine.ui.webadmin.widget.table.column.VolumeActivityStatusColumn;
 
+import com.google.gwt.cell.client.HasCell;
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.cellview.client.Column;
 import com.google.inject.Inject;
 
 public class SubTabVolumeBrickView extends 
AbstractSubTabTableView<GlusterVolumeEntity, GlusterBrickEntity, 
VolumeListModel, VolumeBrickListModel> implements 
SubTabVolumeBrickPresenter.ViewDef {
@@ -58,6 +64,9 @@
         };
         getTable().addColumn(directoryColumn, 
constants.brickDirectoryVolumeBrick(), "400px"); //$NON-NLS-1$
 
+        getTable().addColumn(new 
VolumeActivityColumn<GlusterBrickEntity>(getActivityCell(constants)),
+                constants.activitiesOnVolume(), "100px"); //$NON-NLS-1$
+
         getTable().addActionButton(new 
WebAdminButtonDefinition<GlusterBrickEntity>(constants.addBricksBrick()) {
             @Override
             protected UICommand resolveCommand() {
@@ -65,31 +74,12 @@
             }
         });
 
-        List<ActionButtonDefinition<GlusterBrickEntity>> removeSubActions = 
new LinkedList<ActionButtonDefinition<GlusterBrickEntity>>();
-        removeSubActions.add(new 
WebAdminButtonDefinition<GlusterBrickEntity>(constants.removeBricksStart()) {
+        getTable().addActionButton(new 
WebAdminButtonDefinition<GlusterBrickEntity>(constants.removeBricksBrick()) {
             @Override
             protected UICommand resolveCommand() {
                 return getDetailModel().getRemoveBricksCommand();
             }
         });
-
-        removeSubActions.add(new 
WebAdminButtonDefinition<GlusterBrickEntity>(constants.removeBricksStop()) {
-            @Override
-            protected UICommand resolveCommand() {
-                return getDetailModel().getStopRemoveBricksCommand();
-            }
-        });
-
-        removeSubActions.add(new 
WebAdminButtonDefinition<GlusterBrickEntity>(constants.removeBricksCommit()) {
-            @Override
-            protected UICommand resolveCommand() {
-                return getDetailModel().getCommitRemoveBricksCommand();
-            }
-        });
-
-        getTable().addActionButton(new 
WebAdminMenuBarButtonDefinition<GlusterBrickEntity>(constants.removeBricksBrick(),
-                removeSubActions,
-                CommandLocation.ContextAndToolBar));
 
         getTable().addActionButton(new 
WebAdminButtonDefinition<GlusterBrickEntity>(constants.replaceBrickBrick()) {
             @Override
@@ -105,4 +95,43 @@
             }
         });
     }
+
+    private VolumeActivityCompositeCell<GlusterTaskSupport> 
getActivityCell(ApplicationConstants constants) {
+        MenuCell<GlusterTaskSupport> removeBricksMenuCell = 
getRemoveBrickActivityMenu(constants);
+        List<HasCell<GlusterTaskSupport, ?>> list = new 
ArrayList<HasCell<GlusterTaskSupport, ?>>();
+        list.add(new VolumeActivityStatusColumn<GlusterTaskSupport>());
+        list.add(new Column<GlusterTaskSupport, GlusterTaskSupport>(new 
VolumeActivitySeperatorCell<GlusterTaskSupport>()) {
+            @Override
+            public GlusterTaskSupport getValue(GlusterTaskSupport object) {
+                return object;
+            }
+        });
+        list.add(new Column<GlusterTaskSupport, 
GlusterTaskSupport>(removeBricksMenuCell) {
+            @Override
+            public GlusterTaskSupport getValue(GlusterTaskSupport object) {
+                return object;
+            }
+        });
+
+        VolumeActivityCompositeCell<GlusterTaskSupport> activityCell =
+                new VolumeActivityCompositeCell<GlusterTaskSupport>(list) {
+                    @Override
+                    protected boolean isVisible(GlusterTaskSupport value) {
+                        return value.getAsyncTask().getType() == 
GlusterTaskType.REMOVE_BRICK;
+                    }
+                };
+        return activityCell;
+    }
+
+    private MenuCell<GlusterTaskSupport> 
getRemoveBrickActivityMenu(ApplicationConstants constants) {
+        MenuCell<GlusterTaskSupport> menuCell = new 
MenuCell<GlusterTaskSupport>() {
+            @Override
+            protected boolean isVisible(GlusterTaskSupport value) {
+                return value.getAsyncTask().getType() == 
GlusterTaskType.REMOVE_BRICK;
+            }
+        };
+        menuCell.addMenuItem(constants.removeBricksStop(), 
getDetailModel().getStopRemoveBricksCommand());
+        menuCell.addMenuItem(constants.removeBricksCommit(), 
getDetailModel().getCommitRemoveBricksCommand());
+        return menuCell;
+    }
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityColumn.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityColumn.java
index de707a6..d946530 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityColumn.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityColumn.java
@@ -10,7 +10,11 @@
 public class VolumeActivityColumn<T extends GlusterTaskSupport> extends 
Column<T, GlusterTaskSupport> {
 
     public VolumeActivityColumn(List<HasCell<GlusterTaskSupport, ?>> list) {
-        super(new VolumeActivityCompositeCell<GlusterTaskSupport>(list));
+        this(new VolumeActivityCompositeCell<GlusterTaskSupport>(list));
+    }
+
+    public 
VolumeActivityColumn(VolumeActivityCompositeCell<GlusterTaskSupport> cell) {
+        super(cell);
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityCompositeCell.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityCompositeCell.java
index 6232b0d..74a3c93 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityCompositeCell.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityCompositeCell.java
@@ -28,6 +28,10 @@
             return;
         }
 
+        if (!isVisible(value)) {
+            return;
+        }
+
         sb.appendHtmlConstant("<table style=\"margin:0 auto\"><tr>"); 
//$NON-NLS-1$
         Iterator<HasCell<T, ?>> iterator = hasCells.iterator();
         while (iterator.hasNext()) {
@@ -36,6 +40,10 @@
         sb.appendHtmlConstant("</tr></table>"); //$NON-NLS-1$
     }
 
+    protected boolean isVisible(T value) {
+        return true;
+    }
+
     @Override
     protected <X> void render(Context context,
             T value,
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityStatusCell.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityStatusCell.java
index 579209f..323e40d 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityStatusCell.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeActivityStatusCell.java
@@ -57,6 +57,29 @@
                 tooltip = ""; //$NON-NLS-1$
             }
         }
+        else if (taskType == GlusterTaskType.REMOVE_BRICK) {
+            switch (value.getAsyncTask().getStatus()) {
+            case STARTED:
+                taskImage = resources.removeBrickRunning();
+                tooltip = constants.removeBrickInProgress();
+                break;
+            case ABORTED:
+                taskImage = resources.removeBrickFailed();
+                tooltip = constants.removeBrickStopped();
+                break;
+            case FAILED:
+                taskImage = resources.removeBrickFailed();
+                tooltip = constants.removeBrickFailed();
+                break;
+            case FINISHED:
+                taskImage = resources.removeBrickCommitRequired();
+                tooltip = constants.removeBrickCommitRequired();
+                break;
+            default:
+                taskImage = null;
+                tooltip = ""; //$NON-NLS-1$
+            }
+        }
 
         if (taskImage != null) {
             // Generate the HTML for the image:
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_commit_required.png
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_commit_required.png
new file mode 100644
index 0000000..0a160f3
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_commit_required.png
Binary files differ
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_failed.png
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_failed.png
new file mode 100644
index 0000000..f7422c9
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_failed.png
Binary files differ
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_running.png
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_running.png
new file mode 100644
index 0000000..f686ecf
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_running.png
Binary files differ
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_stopped.png
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_stopped.png
new file mode 100644
index 0000000..2b63c44
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/images/glusterRebalance/remove_brick_stopped.png
Binary files differ


-- 
To view, visit http://gerrit.ovirt.org/20009
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I820c8b2e2e948d1c2ce0811d2d5a78784eeafc2b
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Kanagaraj M <kmayi...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to