Kanagaraj M has uploaded a new change for review.

Change subject: webadmin: Gluster Hooks sub tab in Cluster
......................................................................

webadmin: Gluster Hooks sub tab in Cluster

Gluster Hooks sub tab is added to Cluster Main tab.

Gluster Hooks will be visible only if the selected
cluster suports Gluster.

Change-Id: Ibe5b393c6624d79219cfd9e490e9ddbea9445006
Signed-off-by: Kanagaraj M <kmayi...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterGlusterHookListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.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/gin/ManagedComponents.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ClusterModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/SubTabClusterGlusterHookPresenter.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/SubTabClusterPermissionPresenter.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterGlusterHookView.java
13 files changed, 286 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/35/11235/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
index 90808a6..c6ac2f3 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
@@ -305,6 +305,9 @@
                <include 
name="common/businessentities/gluster/MemoryStatus.java"/>
                <include name="common/businessentities/gluster/Mempool.java"/>
                <include 
name="common/businessentities/gluster/ServiceType.java"/>
+               <include 
name="common/businessentities/gluster/GlusterHookEntity.java"/>
+               <include 
name="common/businessentities/gluster/GlusterHookStatus.java"/>
+               <include 
name="common/businessentities/gluster/GlusterHookLevel.java"/>
                <include name="common/action/gluster/*.java"/>
                <include name="common/queries/gluster/*.java"/>
                <include name="common/constants/gluster/GlusterConstants.java"/>
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 1b0e739..39c1365 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
@@ -45,6 +45,7 @@
 import org.ovirt.engine.core.common.businessentities.storage_pool;
 import org.ovirt.engine.core.common.businessentities.tags;
 import org.ovirt.engine.core.common.businessentities.vm_pools;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookEntity;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
 import org.ovirt.engine.core.common.businessentities.network.Network;
 import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
@@ -55,7 +56,6 @@
 import org.ovirt.engine.core.common.queries.CommandVersionsInfo;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
 import org.ovirt.engine.core.common.queries.GetAllAttachableDisks;
-import org.ovirt.engine.core.common.queries.InterfaceAndIdQueryParameters;
 import org.ovirt.engine.core.common.queries.GetAllDisksByVmIdParameters;
 import 
org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParameters;
 import 
org.ovirt.engine.core.common.queries.GetAllImagesListByStoragePoolIdParameters;
@@ -83,6 +83,7 @@
 import 
org.ovirt.engine.core.common.queries.GetVmTemplatesByStoragePoolIdParameters;
 import org.ovirt.engine.core.common.queries.GetVmTemplatesDisksParameters;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.InterfaceAndIdQueryParameters;
 import 
org.ovirt.engine.core.common.queries.IsVmPoolWithSameNameExistsParameters;
 import 
org.ovirt.engine.core.common.queries.IsVmTemlateWithSameNameExistParameters;
 import org.ovirt.engine.core.common.queries.IsVmWithSameNameExistParameters;
@@ -1126,6 +1127,19 @@
                 aQuery);
     }
 
+    public static void getGlusterHooks(AsyncQuery aQuery, Guid clusterId) {
+        aQuery.converterCallback = new IAsyncConverter() {
+            @Override
+            public Object Convert(Object source, AsyncQuery _asyncQuery)
+            {
+                return source != null ? source : new 
ArrayList<GlusterHookEntity>();
+            }
+        };
+        Frontend.RunQuery(VdcQueryType.GetGlusterHooks,
+                new GlusterParameters(clusterId),
+                aQuery);
+    }
+
     public static void GetRpmVersionViaPublic(AsyncQuery aQuery) {
         aQuery.converterCallback = new IAsyncConverter() {
             @Override
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterGlusterHookListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterGlusterHookListModel.java
new file mode 100644
index 0000000..8dfc1d0
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterGlusterHookListModel.java
@@ -0,0 +1,74 @@
+package org.ovirt.engine.ui.uicommonweb.models.clusters;
+
+import java.util.List;
+
+import org.ovirt.engine.core.common.businessentities.VDSGroup;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookEntity;
+import org.ovirt.engine.core.common.mode.ApplicationMode;
+import org.ovirt.engine.ui.frontend.AsyncQuery;
+import org.ovirt.engine.ui.frontend.INewAsyncCallback;
+import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
+import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+
+public class ClusterGlusterHookListModel extends SearchableListModel {
+
+    @Override
+    public VDSGroup getEntity()
+    {
+        return (VDSGroup) super.getEntity();
+    }
+
+    public ClusterGlusterHookListModel()
+    {
+        
setTitle(ConstantsManager.getInstance().getConstants().glusterHooksTitle());
+        setHashName("gluster_hooks"); // $//$NON-NLS-1$
+        setAvailableInModes(ApplicationMode.GlusterOnly);
+    }
+
+    @Override
+    protected void OnEntityChanged()
+    {
+        super.OnEntityChanged();
+        getSearchCommand().Execute();
+    }
+
+    @Override
+    public void Search()
+    {
+        if (getEntity() != null)
+        {
+            super.Search();
+        }
+    }
+
+    @Override
+    protected void SyncSearch()
+    {
+        if (getEntity() == null)
+        {
+            return;
+        }
+
+        AsyncDataProvider.getGlusterHooks(new AsyncQuery(this, new 
INewAsyncCallback() {
+
+            @Override
+            public void OnSuccess(Object model, Object returnValue) {
+                List<GlusterHookEntity> glusterHooks = 
(List<GlusterHookEntity>) returnValue;
+                setItems(glusterHooks);
+            }
+        }), getEntity().getId());
+    }
+
+    @Override
+    protected void AsyncSearch()
+    {
+        super.AsyncSearch();
+        SyncSearch();
+    }
+
+    @Override
+    protected String getListName() {
+        return "ClusterHookListModel"; //$NON-NLS-1$
+    }
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
index 7de8a7c..babfea3 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
@@ -154,6 +154,16 @@
         this.clusterServiceModel = clusterServiceModel;
     }
 
+    private ClusterGlusterHookListModel clusterGlusterHookListModel;
+
+    public ClusterGlusterHookListModel getClusterGlusterHookListModel() {
+        return clusterGlusterHookListModel;
+    }
+
+    public void setClusterGlusterHookListModel(ClusterGlusterHookListModel 
clusterGlusterHookListModel) {
+        this.clusterGlusterHookListModel = clusterGlusterHookListModel;
+    }
+
     public ClusterListModel()
     {
         
setTitle(ConstantsManager.getInstance().getConstants().clustersTitle());
@@ -211,6 +221,7 @@
         super.InitDetailModels();
 
         setClusterServiceModel(new ClusterServiceModel());
+        setClusterGlusterHookListModel(new ClusterGlusterHookListModel());
 
         ObservableCollection<EntityModel> list = new 
ObservableCollection<EntityModel>();
         clusterGeneralModel = new ClusterGeneralModel();
@@ -219,6 +230,7 @@
         list.add(new ClusterHostListModel());
         list.add(new ClusterVmListModel());
         list.add(getClusterServiceModel());
+        list.add(getClusterGlusterHookListModel());
         list.add(new PermissionListModel());
         setDetailModels(list);
     }
@@ -227,6 +239,7 @@
     protected void UpdateDetailsAvailability() {
         super.UpdateDetailsAvailability();
         getClusterServiceModel().setIsAvailable(((VDSGroup) 
getSelectedItem()).supportsGlusterService());
+        getClusterGlusterHookListModel().setIsAvailable(((VDSGroup) 
getSelectedItem()).supportsGlusterService());
     }
 
     @Override
@@ -577,8 +590,8 @@
             cluster.setcpu_name(((ServerCpu) 
model.getCPU().getSelectedItem()).getCpuName());
         }
         cluster.setmax_vds_memory_over_commit(model.getMemoryOverCommit());
-        cluster.setCountThreadsAsCores(Boolean.TRUE.equals((Boolean) 
model.getVersionSupportsCpuThreads().getEntity())
-                && Boolean.TRUE.equals((Boolean) 
model.getCountThreadsAsCores().getEntity()));
+        
cluster.setCountThreadsAsCores(Boolean.TRUE.equals(model.getVersionSupportsCpuThreads().getEntity())
+                && 
Boolean.TRUE.equals(model.getCountThreadsAsCores().getEntity()));
         cluster.setTransparentHugepages(version.compareTo(new Version("3.0")) 
>= 0); //$NON-NLS-1$
         cluster.setcompatibility_version(version);
         cluster.setMigrateOnError(model.getMigrateOnErrorOption());
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
index f94e5b1..c72dd1b 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
@@ -79,6 +79,9 @@
     @DefaultStringValue("Services")
     String servicesTitle();
 
+    @DefaultStringValue("Gluster Hooks")
+    String glusterHooksTitle();
+
     @DefaultStringValue("Edit Policy")
     String editPolicyTitle();
 
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 c7cb7f4..02cdfeb 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
@@ -307,6 +307,9 @@
     @DefaultStringValue("Services")
     String clusterServiceSubTabLabel();
 
+    @DefaultStringValue("Gluster Hooks")
+    String clusterHooksSubTabLabel();
+
     @DefaultStringValue("Permissions")
     String clusterPermissionSubTabLabel();
 
@@ -1661,6 +1664,19 @@
     @DefaultStringValue("Show All")
     String showAllService();
 
+    // Cluster Hooks
+    @DefaultStringValue("Name")
+    String nameHook();
+
+    @DefaultStringValue("Command")
+    String glusterCommandHook();
+
+    @DefaultStringValue("Stage")
+    String stageHook();
+
+    @DefaultStringValue("Status")
+    String statusHook();
+
     // Interface
     @DefaultStringValue("Empty")
     String emptyInterface();
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java
index 6310f93..9571f60 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java
@@ -19,6 +19,7 @@
 import org.ovirt.engine.core.common.businessentities.storage_pool;
 import org.ovirt.engine.core.common.businessentities.vm_pools;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookEntity;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeOptionEntity;
 import org.ovirt.engine.core.common.businessentities.network.Network;
@@ -33,6 +34,7 @@
 import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterGeneralModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterGlusterHookListModel;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterHostListModel;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterNetworkListModel;
@@ -55,9 +57,9 @@
 import org.ovirt.engine.ui.uicommonweb.models.gluster.VolumeEventListModel;
 import org.ovirt.engine.ui.uicommonweb.models.gluster.VolumeGeneralModel;
 import org.ovirt.engine.ui.uicommonweb.models.gluster.VolumeParameterListModel;
-import org.ovirt.engine.ui.uicommonweb.models.hosts.HostHardwareGeneralModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostEventListModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostGeneralModel;
+import org.ovirt.engine.ui.uicommonweb.models.hosts.HostHardwareGeneralModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostHooksListModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostInterfaceLineModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostInterfaceListModel;
@@ -142,6 +144,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabVolumePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster.ClusterSubTabPanelPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster.SubTabClusterGeneralPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster.SubTabClusterGlusterHookPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster.SubTabClusterHostPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster.SubTabClusterNetworkPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster.SubTabClusterPermissionPresenter;
@@ -167,9 +170,9 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumePermissionPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.VolumeSubTabPanelPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.HostSubTabPanelPresenter;
-import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostHardwarePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostEventPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostGeneralPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostHardwarePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostHookPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostInterfacePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostPermissionPresenter;
@@ -422,6 +425,10 @@
 
     DetailModelProvider<ClusterListModel, ClusterServiceModel> 
getSubTabClusterServiceModelProvider();
 
+    AsyncProvider<SubTabClusterGlusterHookPresenter> 
getSubTabClusterGlusterHookPresenter();
+
+    SearchableDetailModelProvider<GlusterHookEntity, ClusterListModel, 
ClusterGlusterHookListModel> getSubTabClusterGlusterHookModelProvider();
+
     AsyncProvider<SubTabClusterPermissionPresenter> 
getSubTabClusterPermissionPresenter();
 
     SearchableDetailModelProvider<permissions, ClusterListModel, 
PermissionListModel> getSubTabClusterPermissionModelProvider();
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java
index 3faf600..aea46c2 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java
@@ -99,6 +99,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabVolumePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster.ClusterSubTabPanelPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster.SubTabClusterGeneralPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster.SubTabClusterGlusterHookPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster.SubTabClusterHostPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster.SubTabClusterNetworkPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster.SubTabClusterPermissionPresenter;
@@ -124,9 +125,9 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumePermissionPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.VolumeSubTabPanelPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.HostSubTabPanelPresenter;
-import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostHardwarePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostEventPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostGeneralPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostHardwarePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostHookPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostInterfacePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostPermissionPresenter;
@@ -281,6 +282,7 @@
 import org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabVolumeView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.cluster.ClusterSubTabPanelView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.cluster.SubTabClusterGeneralView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.cluster.SubTabClusterGlusterHookView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.cluster.SubTabClusterHostView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.cluster.SubTabClusterNetworkView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.cluster.SubTabClusterPermissionView;
@@ -306,9 +308,9 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.gluster.SubTabVolumePermissionView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.gluster.VolumeSubTabPanelView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.host.HostSubTabPanelView;
-import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.host.SubTabHostHardwareView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.host.SubTabHostEventView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.host.SubTabHostGeneralView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.host.SubTabHostHardwareView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.host.SubTabHostHookView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.host.SubTabHostInterfaceView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.host.SubTabHostPermissionView;
@@ -580,6 +582,10 @@
                 SubTabClusterServicePresenter.ViewDef.class,
                 SubTabClusterServiceView.class,
                 SubTabClusterServicePresenter.ProxyDef.class);
+        bindPresenter(SubTabClusterGlusterHookPresenter.class,
+                SubTabClusterGlusterHookPresenter.ViewDef.class,
+                SubTabClusterGlusterHookView.class,
+                SubTabClusterGlusterHookPresenter.ProxyDef.class);
         bindPresenter(SubTabClusterPermissionPresenter.class,
                 SubTabClusterPermissionPresenter.ViewDef.class,
                 SubTabClusterPermissionView.class,
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ClusterModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ClusterModule.java
index ba97aa1..31843bd 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ClusterModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ClusterModule.java
@@ -4,6 +4,7 @@
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.permissions;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookEntity;
 import org.ovirt.engine.core.common.businessentities.network.Network;
 import 
org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget;
 import org.ovirt.engine.ui.common.presenter.ModelBoundPresenterWidget;
@@ -19,6 +20,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel;
 import org.ovirt.engine.ui.uicommonweb.models.Model;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterGeneralModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterGlusterHookListModel;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterHostListModel;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterNetworkListModel;
@@ -29,8 +31,8 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.ReportPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.PermissionsPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.cluster.ClusterManageNetworkPopupPresenterWidget;
-import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.cluster.NewClusterNetworkPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.cluster.ClusterPopupPresenterWidget;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.cluster.NewClusterNetworkPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.DetachGlusterHostsPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.guide.GuidePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host.MultipleHostsPopupPresenterWidget;
@@ -166,6 +168,14 @@
 
     @Provides
     @Singleton
+    public SearchableDetailModelProvider<GlusterHookEntity, ClusterListModel, 
ClusterGlusterHookListModel> getClusterGlusterHookListProvider(ClientGinjector 
ginjector) {
+        return new SearchableDetailTabModelProvider<GlusterHookEntity, 
ClusterListModel, ClusterGlusterHookListModel>(ginjector,
+                ClusterListModel.class,
+                ClusterGlusterHookListModel.class);
+    }
+
+    @Provides
+    @Singleton
     public SearchableDetailModelProvider<permissions, ClusterListModel, 
PermissionListModel> getPermissionListProvider(ClientGinjector ginjector,
             final Provider<PermissionsPopupPresenterWidget> popupProvider,
             final Provider<RemoveConfirmationPopupPresenterWidget> 
removeConfirmPopupProvider) {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
index 0c5f930..694a330 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
@@ -114,6 +114,9 @@
     public static final String clusterServiceSubTabPlace = clusterMainTabPlace 
+ SUB_TAB_PREFIX
             + "services"; //$NON-NLS-1$
 
+    public static final String clusterGlusterHookSubTabPlace = 
clusterMainTabPlace + SUB_TAB_PREFIX
+            + "gluster_hooks"; //$NON-NLS-1$
+
     public static final String clusterPermissionSubTabPlace = 
clusterMainTabPlace + SUB_TAB_PREFIX
             + "permissions"; //$NON-NLS-1$
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/SubTabClusterGlusterHookPresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/SubTabClusterGlusterHookPresenter.java
new file mode 100644
index 0000000..993e63e
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/SubTabClusterGlusterHookPresenter.java
@@ -0,0 +1,64 @@
+package org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster;
+
+import org.ovirt.engine.core.common.businessentities.VDSGroup;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookEntity;
+import org.ovirt.engine.ui.common.presenter.AbstractSubTabPresenter;
+import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider;
+import org.ovirt.engine.ui.common.widget.tab.ModelBoundTabData;
+import 
org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterGlusterHookListModel;
+import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel;
+import org.ovirt.engine.ui.webadmin.gin.ClientGinjector;
+import org.ovirt.engine.ui.webadmin.place.ApplicationPlaces;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.ClusterSelectionChangeEvent;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.gwtplatform.mvp.client.TabData;
+import com.gwtplatform.mvp.client.annotations.NameToken;
+import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit;
+import com.gwtplatform.mvp.client.annotations.ProxyEvent;
+import com.gwtplatform.mvp.client.annotations.TabInfo;
+import com.gwtplatform.mvp.client.proxy.PlaceManager;
+import com.gwtplatform.mvp.client.proxy.PlaceRequest;
+import com.gwtplatform.mvp.client.proxy.RevealContentEvent;
+import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace;
+
+public class SubTabClusterGlusterHookPresenter extends 
AbstractSubTabPresenter<VDSGroup, ClusterListModel, 
ClusterGlusterHookListModel, SubTabClusterGlusterHookPresenter.ViewDef, 
SubTabClusterGlusterHookPresenter.ProxyDef> {
+
+    @ProxyCodeSplit
+    @NameToken(ApplicationPlaces.clusterGlusterHookSubTabPlace)
+    public interface ProxyDef extends 
TabContentProxyPlace<SubTabClusterGlusterHookPresenter> {
+    }
+
+    public interface ViewDef extends AbstractSubTabPresenter.ViewDef<VDSGroup> 
{
+    }
+
+    @TabInfo(container = ClusterSubTabPanelPresenter.class)
+    static TabData getTabData(ClientGinjector ginjector) {
+        return new 
ModelBoundTabData(ginjector.getApplicationConstants().clusterHooksSubTabLabel(),
 5,
+                ginjector.getSubTabClusterGlusterHookModelProvider());
+    }
+
+    @Inject
+    public SubTabClusterGlusterHookPresenter(EventBus eventBus, ViewDef view, 
ProxyDef proxy,
+            PlaceManager placeManager,
+            SearchableDetailModelProvider<GlusterHookEntity, ClusterListModel, 
ClusterGlusterHookListModel> modelProvider) {
+        super(eventBus, view, proxy, placeManager, modelProvider);
+    }
+
+    @Override
+    protected void revealInParent() {
+        RevealContentEvent.fire(this, 
ClusterSubTabPanelPresenter.TYPE_SetTabContent, this);
+    }
+
+    @Override
+    protected PlaceRequest getMainTabRequest() {
+        return new PlaceRequest(ApplicationPlaces.clusterMainTabPlace);
+    }
+
+    @ProxyEvent
+    public void onClusterSelectionChange(ClusterSelectionChangeEvent event) {
+        updateMainTabSelection(event.getSelectedItems());
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/SubTabClusterPermissionPresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/SubTabClusterPermissionPresenter.java
index b426eab..2a7d94e 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/SubTabClusterPermissionPresenter.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/SubTabClusterPermissionPresenter.java
@@ -35,7 +35,7 @@
 
     @TabInfo(container = ClusterSubTabPanelPresenter.class)
     static TabData getTabData(ClientGinjector ginjector) {
-        return new 
ModelBoundTabData(ginjector.getApplicationConstants().clusterPermissionSubTabLabel(),
 5,
+        return new 
ModelBoundTabData(ginjector.getApplicationConstants().clusterPermissionSubTabLabel(),
 6,
                 ginjector.getSubTabClusterPermissionModelProvider());
     }
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterGlusterHookView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterGlusterHookView.java
new file mode 100644
index 0000000..8575cf9
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterGlusterHookView.java
@@ -0,0 +1,64 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.tab.cluster;
+
+import javax.inject.Inject;
+
+import org.ovirt.engine.core.common.businessentities.VDSGroup;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookEntity;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookLevel;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookStatus;
+import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider;
+import org.ovirt.engine.ui.common.widget.table.column.EnumColumn;
+import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import 
org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterGlusterHookListModel;
+import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster.SubTabClusterGlusterHookPresenter;
+import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView;
+
+public class SubTabClusterGlusterHookView extends 
AbstractSubTabTableView<VDSGroup, GlusterHookEntity, ClusterListModel, 
ClusterGlusterHookListModel>
+        implements SubTabClusterGlusterHookPresenter.ViewDef {
+
+    @Inject
+    public 
SubTabClusterGlusterHookView(SearchableDetailModelProvider<GlusterHookEntity, 
ClusterListModel, ClusterGlusterHookListModel> modelProvider,
+            ApplicationConstants constants) {
+        super(modelProvider);
+        initTable(constants);
+        initWidget(getTable());
+    }
+
+    void initTable(final ApplicationConstants constants) {
+        TextColumnWithTooltip<GlusterHookEntity> nameColumn = new 
TextColumnWithTooltip<GlusterHookEntity>() {
+            @Override
+            public String getValue(GlusterHookEntity object) {
+                return object.getName();
+            }
+        };
+        getTable().addColumn(nameColumn, constants.nameHook());
+
+        TextColumnWithTooltip<GlusterHookEntity> glusterCommandColumn = new 
TextColumnWithTooltip<GlusterHookEntity>() {
+            @Override
+            public String getValue(GlusterHookEntity object) {
+                return object.getGlusterCommand();
+            }
+        };
+        getTable().addColumn(glusterCommandColumn, 
constants.glusterCommandHook());
+
+        TextColumnWithTooltip<GlusterHookEntity> stageColumn = new 
EnumColumn<GlusterHookEntity, GlusterHookLevel>() {
+
+            @Override
+            protected GlusterHookLevel getRawValue(GlusterHookEntity object) {
+                return object.getLevel();
+            }
+        };
+        getTable().addColumn(stageColumn, constants.stageHook());
+
+        TextColumnWithTooltip<GlusterHookEntity> statusColumn = new 
EnumColumn<GlusterHookEntity, GlusterHookStatus>() {
+
+            @Override
+            protected GlusterHookStatus getRawValue(GlusterHookEntity object) {
+                return object.getStatus();
+            }
+        };
+        getTable().addColumn(statusColumn, constants.statusHook());
+    }
+}


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibe5b393c6624d79219cfd9e490e9ddbea9445006
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