Yevgeny Zaspitsky has uploaded a new change for review.

Change subject: webadmin: Add sessions main tab
......................................................................

webadmin: Add sessions main tab

Add sessions main tab with ability to see list of active session
and to terminate them. The can be selected through the system tree.

Change-Id: Ide80e57411ff075f26cba84cc8a952a05343fdd6
Bug-Url: https://bugzilla.redhat.com/1025796
Signed-off-by: Yevgeny Zaspitsky <yzasp...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/SearchBackend.gwt.xml
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SessionListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SystemTreeItemType.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SystemTreeModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/TerminateSessionsModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
M frontend/webadmin/modules/webadmin/exclude-filters.xml
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/ClientGinjectorExtension.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/UiCommonModule.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/SessionModule.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabSessionPresenter.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabSessionView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTreeItemCell.java
19 files changed, 473 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/84/38384/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 1aec05d..80e0f2e 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
@@ -17,6 +17,7 @@
                <include name="common/businessentities/aaa/AuthzGroup.java" />
                <include name="common/businessentities/aaa/DbGroup.java" />
                <include name="common/businessentities/aaa/DbUser.java" />
+        <include name="common/businessentities/EngineSession.java" />
                <include name="aaa/AuthType.java" />
                <include name="aaa/DirectoryEntry.java" />
                <include name="aaa/ProfileEntry.java" />
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/SearchBackend.gwt.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/SearchBackend.gwt.xml
index aece4be..df9f954 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/SearchBackend.gwt.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/SearchBackend.gwt.xml
@@ -71,6 +71,7 @@
                <include 
name="searchbackend/NetworkInterfaceConditionFieldAutoCompleter.java" />
                <include 
name="searchbackend/NetworkClusterConditionFieldAutoCompleter.java" />
                <include 
name="searchbackend/ProviderConditionFieldAutoCompleter.java" />
+               <include 
name="searchbackend/SessionConditionFieldAutoCompleter.java" />
                
<!--======================SEARCHBACKEND/GLUSTER====================== -->
                <include 
name="searchbackend/gluster/GlusterVolumeConditionFieldAutoCompleter.java" />
                <include 
name="searchbackend/gluster/GlusterVolumeCrossRefAutoCompleter.java" />
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
index c1cebad..13feeb0 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
@@ -394,6 +394,8 @@
 
     remove_provider("remove_provider", HelpTagType.WEBADMIN, "[Neutron 
integration] 'Providers' main tab -> 'Remove Provider(s)' dialog"), 
//$NON-NLS-1$ //$NON-NLS-2$
 
+    terminate_session("terminate_session", HelpTagType.WEBADMIN, "'Sessions' 
main tab -> 'Terminate Sessions(s)' dialog"), //$NON-NLS-1$ //$NON-NLS-2$
+
     remove_quota("remove_quota", HelpTagType.WEBADMIN, "Quota Tab > Remove 
Quota"), //$NON-NLS-1$ //$NON-NLS-2$
 
     remove_quota_assignment_from_user("remove_quota_assignment_from_user", 
HelpTagType.WEBADMIN, "Quota Tab > Users Sub-Tab > Detach Users/Groups from 
Quota"), //$NON-NLS-1$ //$NON-NLS-2$
@@ -442,6 +444,8 @@
 
     sessions("sessions", HelpTagType.UNKNOWN), //$NON-NLS-1$
 
+    engine_sessions("engine_sessions", HelpTagType.UNKNOWN), //$NON-NLS-1$
+
     set_unlimited_specific_quota("set_unlimited_specific_quota", 
HelpTagType.WEBADMIN, "Quota main tab -> New Quota dialog -> confirmation 
dialog on setting an 'unlimited' quota on a certain resource."), //$NON-NLS-1$ 
//$NON-NLS-2$
 
     snapshots("snapshots", HelpTagType.UNKNOWN), //$NON-NLS-1$
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
index 140abe1..a2d879a 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
@@ -108,6 +108,7 @@
     private final SystemTreeModel systemTreeModel;
     private final AlertListModel alertListModel;
     private final TaskListModel taskListModel;
+    private final SessionListModel sessionListModel;
     private final SharedMacPoolListModel sharedMacPoolListModel;
 
     @Inject
@@ -138,6 +139,7 @@
             final AlertListModel alertListModel,
             final TaskListModel taskListModel,
             final SharedMacPoolListModel sharedMacPoolListModel,
+            final SessionListModel sessionListModel,
             final EventBus eventBus) {
 
         this.dataCenterListModel = dataCenterListModel;
@@ -167,6 +169,7 @@
         this.alertListModel = alertListModel;
         this.taskListModel = taskListModel;
         this.sharedMacPoolListModel = sharedMacPoolListModel;
+        this.sessionListModel = sessionListModel;
         setModelList();
 
         setSignedOutEvent(new Event<EventArgs>(signedOutEventDefinition));
@@ -225,6 +228,7 @@
         modelList.add(this.providerListModel);
         modelList.add(this.vnicProfileListModel);
         modelList.add(this.instanceTypeListModel);
+        modelList.add(this.sessionListModel);
         setItems(modelList);
     }
 
@@ -466,6 +470,8 @@
 
         getProfileList().setIsAvailable(type == SystemTreeItemType.Network
                 || type == SystemTreeItemType.DataCenter);
+
+        getSessionList().setIsAvailable(type == SystemTreeItemType.Sessions);
     }
 
     private void changeSelectedTabIfNeeded(SystemTreeItemModel model) {
@@ -511,6 +517,9 @@
             case Providers:
             case Provider:
                 setSelectedItem(getProviderList());
+                break;
+            case Sessions:
+                setSelectedItem(getSessionList());
                 break;
             default:
                 // webadmin: redirect to default tab in case no tab is 
selected.
@@ -909,6 +918,11 @@
                     prefix.argvalue = "Provider: name = " + model.getTitle(); 
//$NON-NLS-1$
                 }
                 break;
+            case Sessions:
+                if (getSessionList().isSearchStringMatch(source)) {
+                    prefix.argvalue = "Session:"; //$NON-NLS-1$
+                }
+                break;
             }
 
             prefix.argvalue = prefix.argvalue + " "; //$NON-NLS-1$
@@ -1045,6 +1059,10 @@
         return providerListModel;
     }
 
+    public SessionListModel getSessionList() {
+        return sessionListModel;
+    }
+
     public NetworkListModel getNetworkList() {
         return networkListModel;
     }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SessionListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SessionListModel.java
new file mode 100644
index 0000000..52c2c59
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SessionListModel.java
@@ -0,0 +1,131 @@
+package org.ovirt.engine.ui.uicommonweb.models;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import com.google.inject.Inject;
+import org.ovirt.engine.core.common.businessentities.EngineSession;
+import org.ovirt.engine.core.common.interfaces.SearchType;
+import org.ovirt.engine.core.common.mode.ApplicationMode;
+import org.ovirt.engine.core.common.queries.SearchParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.searchbackend.SearchObjects;
+import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.help.HelpTag;
+import org.ovirt.engine.ui.uicommonweb.place.WebAdminApplicationPlaces;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+
+public class SessionListModel extends 
ListWithSimpleDetailsModel<EngineSession, EngineSession>
+        implements ISupportSystemTreeContext {
+
+    private static final String CMD_TERMINATE = "Terminate"; //$NON-NLS-1$
+
+    private UICommand terminateCommand;
+
+    private SystemTreeItemModel systemTreeSelectedItem;
+
+    @Inject
+    public SessionListModel() {
+
+        
setTitle(ConstantsManager.getInstance().getConstants().engineSessionsTitle());
+        setHelpTag(HelpTag.engine_sessions);
+        setApplicationPlace(WebAdminApplicationPlaces.sessionMainTabPlace);
+        setHashName("sessions"); //$NON-NLS-1$
+
+        setDefaultSearchString("Session:"); //$NON-NLS-1$
+        setSearchString(getDefaultSearchString());
+        setSearchObjects(new String[] { SearchObjects.SESSION_OBJ_NAME, 
SearchObjects.SESSION_PLU_OBJ_NAME });
+        setAvailableInModes(ApplicationMode.AllModes);
+
+        setTerminateCommand(new UICommand(CMD_TERMINATE, this));
+
+        terminateActionAvailability();
+
+        getSearchNextPageCommand().setIsAvailable(true);
+        getSearchPreviousPageCommand().setIsAvailable(true);
+    }
+
+    public UICommand getTerminateCommand() {
+        return terminateCommand;
+    }
+
+    private void setTerminateCommand(UICommand value) {
+        terminateCommand = value;
+    }
+
+    @Override
+    protected String getListName() {
+        return "SessionListModel"; //$NON-NLS-1$
+    }
+
+    @Override
+    public SystemTreeItemModel getSystemTreeSelectedItem() {
+        return systemTreeSelectedItem;
+    }
+
+    @Override
+    public void setSystemTreeSelectedItem(SystemTreeItemModel value) {
+        if (systemTreeSelectedItem != value) {
+            systemTreeSelectedItem = value;
+            onSystemTreeSelectedItemChanged();
+        }
+    }
+
+    private void onSystemTreeSelectedItemChanged() {
+        terminateActionAvailability();
+    }
+
+    @Override
+    protected void onSelectedItemChanged() {
+        super.onSelectedItemChanged();
+        terminateActionAvailability();
+    }
+
+    @Override
+    protected void selectedItemsChanged() {
+        super.selectedItemsChanged();
+        terminateActionAvailability();
+    }
+
+    private void terminateActionAvailability() {
+        Collection<EngineSession> selectedSession = getSelectedItems();
+        Collection<EngineSession> selectedItems = (selectedSession != null) ? 
selectedSession : new ArrayList();
+
+        getTerminateCommand().setIsExecutionAllowed(selectedItems.size() > 0);
+    }
+
+    @Override
+    public boolean isSearchStringMatch(String searchString) {
+        return searchString.trim().toLowerCase().startsWith("session"); 
//$NON-NLS-1$
+    }
+
+    @Override
+    protected void syncSearch() {
+        SearchParameters searchParameters =
+                new SearchParameters(applySortOptions(getSearchString()), 
SearchType.Session, isCaseSensitiveSearch());
+        searchParameters.setMaxCount(getSearchPageSize());
+        super.syncSearch(VdcQueryType.Search, searchParameters);
+    }
+
+    @Override
+    public boolean supportsServerSideSorting() {
+        return true;
+    }
+
+    private void terminateSession() {
+        if (getConfirmWindow() != null) {
+            return;
+        }
+        setConfirmWindow(new TerminateSessionsModel(this));
+    }
+
+    @Override
+    public void executeCommand(UICommand command) {
+        super.executeCommand(command);
+
+        if (command == getTerminateCommand()) {
+            terminateSession();
+        }
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SystemTreeItemType.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SystemTreeItemType.java
index 8803203..c8484b4 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SystemTreeItemType.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SystemTreeItemType.java
@@ -21,7 +21,8 @@
     Networks,
     Network,
     Providers,
-    Provider;
+    Provider,
+    Sessions;
 
     public int getValue()
     {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SystemTreeModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SystemTreeModel.java
index 6ed449d..f4f8bba 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SystemTreeModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SystemTreeModel.java
@@ -625,6 +625,13 @@
             treeItemById.put(provider.getId(), providerItem);
         }
 
+        //Add sessions node under System
+        SystemTreeItemModel sessionsItem = new SystemTreeItemModel();
+        sessionsItem.setType(SystemTreeItemType.Sessions);
+        sessionsItem.setApplicationMode(ApplicationMode.AllModes);
+        
sessionsItem.setTitle(ConstantsManager.getInstance().getConstants().sessionsTitle());
+        systemItem.addChild(sessionsItem);
+
         if 
(!ApplicationModeHelper.getUiMode().equals(ApplicationMode.AllModes)) {
             ApplicationModeHelper.filterSystemTreeByApplictionMode(systemItem);
         }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/TerminateSessionsModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/TerminateSessionsModel.java
new file mode 100644
index 0000000..f934d0d
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/TerminateSessionsModel.java
@@ -0,0 +1,80 @@
+package org.ovirt.engine.ui.uicommonweb.models;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.ovirt.engine.core.common.action.TerminateSessionParameters;
+import org.ovirt.engine.core.common.action.VdcActionParametersBase;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.businessentities.EngineSession;
+import org.ovirt.engine.ui.frontend.Frontend;
+import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.help.HelpTag;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult;
+import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback;
+
+public class TerminateSessionsModel extends ConfirmationModel {
+
+    private static final String CMD_TEMINATE = "OnTerminate"; //$NON-NLS-1$
+    private static final String CMD_CANCEL = "Cancel"; //$NON-NLS-1$
+
+    private final SearchableListModel sourceListModel;
+    private final List<EngineSession> sessions;
+
+    public TerminateSessionsModel(SearchableListModel<EngineSession, 
EngineSession> sourceListModel) {
+        this.sourceListModel = sourceListModel;
+        this.sessions = sourceListModel.getSelectedItems();
+
+        
setTitle(ConstantsManager.getInstance().getConstants().terminateSessionTitle());
+        setHelpTag(HelpTag.terminate_session);
+        setHashName("terminate_sessions"); //$NON-NLS-1$
+
+        List<String> userNames = new ArrayList<>();
+        for (EngineSession session : sessions) {
+            userNames.add(session.getUserName());
+        }
+        setItems(userNames);
+
+        UICommand okCommand = UICommand.createOkUiCommand(CMD_TEMINATE, this);
+        getCommands().add(okCommand);
+        UICommand cancelCommand = 
UICommand.createDefaultCancelUiCommand(CMD_CANCEL, this);
+        getCommands().add(cancelCommand);
+    }
+
+    private void cancel() {
+        sourceListModel.setConfirmWindow(null);
+    }
+
+    private void onTerminate() {
+        List<VdcActionParametersBase> parameterList = new LinkedList<>();
+        for (EngineSession session : sessions) {
+            final TerminateSessionParameters terminateSessionParameters =
+                    new TerminateSessionParameters(session.getId());
+            parameterList.add(terminateSessionParameters);
+        }
+
+        Frontend.getInstance()
+                .runMultipleActions(VdcActionType.TerminateSession, 
parameterList, new IFrontendActionAsyncCallback() {
+
+                    @Override
+                    public void executed(FrontendActionAsyncResult result) {
+                        sourceListModel.getSearchCommand().execute();
+                    }
+                });
+        cancel();
+    }
+
+    @Override
+    public void executeCommand(UICommand command) {
+        super.executeCommand(command);
+
+        if (CMD_TEMINATE.equals(command.getName())) {
+            onTerminate();
+        } else if (CMD_CANCEL.equals(command.getName())) {
+            cancel();
+        }
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.java
index a91a533..57081df 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.java
@@ -43,6 +43,8 @@
 
     public static final String providerMainTabPlace = "providers"; 
//$NON-NLS-1$
 
+    public static final String sessionMainTabPlace = "sessions"; //$NON-NLS-1$
+
     // Main section: sub tabs
 
     // Important: the value after SUB_TAB_PREFIX must correspond to given 
UiCommon model
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
index 9b7abe2..384f6e6 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
@@ -686,6 +686,9 @@
     @DefaultStringValue("Sessions")
     String sessionsTitle();
 
+    @DefaultStringValue("Engine Sessions")
+    String engineSessionsTitle();
+
     @DefaultStringValue("RDP")
     String RDPTitle();
 
@@ -2141,6 +2144,9 @@
     @DefaultStringValue("Remove Provider(s)")
     String removeProviderTitle();
 
+    @DefaultStringValue("Terminate Session(s)")
+    String terminateSessionTitle();
+
     @DefaultStringValue("Change Provider URL")
     String providerUrlWarningTitle();
 
diff --git a/frontend/webadmin/modules/webadmin/exclude-filters.xml 
b/frontend/webadmin/modules/webadmin/exclude-filters.xml
index bbcd744..f27334f 100644
--- a/frontend/webadmin/modules/webadmin/exclude-filters.xml
+++ b/frontend/webadmin/modules/webadmin/exclude-filters.xml
@@ -150,6 +150,18 @@
         UuF: Unused field (UUF_UNUSED_FIELD)
        -->
      <Match>
+       <Class 
name="org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabSessionPresenter$SessionSelectionChange"
 />
+       <Bug code="UuF"/>
+     </Match>
+
+       <!--
+        findbugs complain of unused field in class.
+        This is a GWT class and use to generate code
+
+        findbugs reason:
+        UuF: Unused field (UUF_UNUSED_FIELD)
+       -->
+     <Match>
        <Class 
name="org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabQuotaPresenter$QuotaSelectionChange"
 />
        <Bug code="UuF"/>
      </Match>
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 c72bec5..b013cf1 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
@@ -94,6 +94,9 @@
     @DefaultStringValue("Providers")
     String providerMainTabLabel();
 
+    @DefaultStringValue("Sessions")
+    String sessionMainTabLabel();
+
     @DefaultStringValue("General")
     String volumeGeneralSubTabLabel();
 
@@ -1953,6 +1956,12 @@
 
     @DefaultStringValue("User Name")
     String userNameUser();
+
+    @DefaultStringValue("User Id")
+    String userId();
+
+    @DefaultStringValue("Session DB Id")
+    String sessionDbId();
 
     @DefaultStringValue("Group")
     String groupUser();
@@ -4043,4 +4052,7 @@
 
     @DefaultStringValue("Snapshot Options")
     String snapshotConfigHeaderLabel();
+
+    @DefaultStringValue("Terminate Session")
+    String terminateSession();
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java
index 50e0511..ff2be16 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java
@@ -4,6 +4,7 @@
 
 import org.ovirt.engine.core.common.businessentities.AuditLog;
 import org.ovirt.engine.core.common.businessentities.Disk;
+import org.ovirt.engine.core.common.businessentities.EngineSession;
 import org.ovirt.engine.core.common.businessentities.IscsiBond;
 import org.ovirt.engine.core.common.businessentities.Permissions;
 import org.ovirt.engine.core.common.businessentities.Quota;
@@ -46,6 +47,7 @@
 import org.ovirt.engine.ui.common.uicommon.model.DetailModelProvider;
 import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
 import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider;
+import org.ovirt.engine.ui.uicommonweb.models.SessionListModel;
 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;
@@ -207,6 +209,8 @@
 
     MainModelProvider<GlusterVolumeEntity, VolumeListModel> 
getMainTabVolumeModelProvider();
 
+    MainModelProvider<EngineSession, SessionListModel> 
getMainTabSessionModelProvider();
+
     // UiCommon model providers: Sub tabs
 
     // DataCenter
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 2b9bb25..4a2599c 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,8 +99,8 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.storage.backup.ImportTemplatePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.storage.backup.ImportVmFromExportDomainPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.tag.TagPopupPresenterWidget;
-import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.template.TemplateInterfacePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.template.TemplateEditPresenterWidget;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.template.TemplateInterfacePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.user.ManageEventsPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.CloneVmPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.VmChangeCDPopupPresenterWidget;
@@ -129,6 +129,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabProviderPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabQuotaPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabReportsPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabSessionPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabStoragePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabTemplatePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabUserPresenter;
@@ -164,13 +165,13 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.disk.SubTabDiskStoragePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.disk.SubTabDiskTemplatePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.disk.SubTabDiskVmPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabGlusterVolumeSnapshotPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumeBrickPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumeEventPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumeGeneralPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumeGeoRepPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumeParameterPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumePermissionPresenter;
-import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabGlusterVolumeSnapshotPresenter;
 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.SubTabHostBrickPresenter;
@@ -344,8 +345,8 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.storage.backup.ImportTemplatePopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.storage.backup.ImportVmFromExportDomainPopupView;
 import org.ovirt.engine.ui.webadmin.section.main.view.popup.tag.TagPopupView;
-import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.template.TemplateInterfacePopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.template.TemplateEditPopupView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.template.TemplateInterfacePopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.user.ManageEventsPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.vm.CloneVmPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.vm.VmChangeCDPopupView;
@@ -376,6 +377,7 @@
 import org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabProviderView;
 import org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabQuotaView;
 import org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabReportsView;
+import org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabSessionView;
 import org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabStorageView;
 import org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabTemplateView;
 import org.ovirt.engine.ui.webadmin.section.main.view.tab.MainTabUserView;
@@ -411,13 +413,13 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.disk.SubTabDiskStorageView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.disk.SubTabDiskTemplateView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.disk.SubTabDiskVmView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.gluster.SubTabGlusterVolumeSnapshotView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.gluster.SubTabVolumeBrickView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.gluster.SubTabVolumeEventView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.gluster.SubTabVolumeGeneralView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.gluster.SubTabVolumeGeoRepView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.gluster.SubTabVolumeParameterView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.gluster.SubTabVolumePermissionView;
-import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.gluster.SubTabGlusterVolumeSnapshotView;
 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.SubTabHostBrickView;
@@ -583,6 +585,10 @@
                 MainTabProviderPresenter.ViewDef.class,
                 MainTabProviderView.class,
                 MainTabProviderPresenter.ProxyDef.class);
+        bindPresenter(MainTabSessionPresenter.class,
+                MainTabSessionPresenter.ViewDef.class,
+                MainTabSessionView.class,
+                MainTabSessionPresenter.ProxyDef.class);
         bindPresenter(MainTabStoragePresenter.class,
                 MainTabStoragePresenter.ViewDef.class,
                 MainTabStorageView.class,
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java
index 0feac7d..5d350a5 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java
@@ -29,6 +29,7 @@
 import org.ovirt.engine.ui.webadmin.gin.uicommon.ProviderModule;
 import org.ovirt.engine.ui.webadmin.gin.uicommon.QuotaModule;
 import org.ovirt.engine.ui.webadmin.gin.uicommon.ReportsModule;
+import org.ovirt.engine.ui.webadmin.gin.uicommon.SessionModule;
 import org.ovirt.engine.ui.webadmin.gin.uicommon.StorageModule;
 import org.ovirt.engine.ui.webadmin.gin.uicommon.TemplateModule;
 import org.ovirt.engine.ui.webadmin.gin.uicommon.UserModule;
@@ -85,6 +86,7 @@
         install(new ProviderModule());
         install(new VnicProfileModule());
         install(new MacPoolModule());
+        install(new SessionModule());
 
         bindCommonModels();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/SessionModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/SessionModule.java
new file mode 100644
index 0000000..89959db
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/SessionModule.java
@@ -0,0 +1,33 @@
+package org.ovirt.engine.ui.webadmin.gin.uicommon;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.inject.client.AbstractGinModule;
+import com.google.inject.Provider;
+import com.google.inject.Provides;
+import com.google.inject.Singleton;
+import org.ovirt.engine.core.common.businessentities.EngineSession;
+import 
org.ovirt.engine.ui.common.presenter.popup.DefaultConfirmationPopupPresenterWidget;
+import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
+import org.ovirt.engine.ui.common.uicommon.model.MainTabModelProvider;
+import org.ovirt.engine.ui.uicommonweb.models.CommonModel;
+import org.ovirt.engine.ui.uicommonweb.models.SessionListModel;
+
+public class SessionModule extends AbstractGinModule {
+
+    @Provides
+    @Singleton
+    public MainModelProvider<EngineSession, SessionListModel> 
getSessionListProvider(EventBus eventBus,
+            final Provider<DefaultConfirmationPopupPresenterWidget> 
defaultConfirmPopupProvider,
+            final Provider<SessionListModel> modelProvider,
+            final Provider<CommonModel> commonModelProvider) {
+        MainTabModelProvider<EngineSession, SessionListModel> 
mainTabSessionModelProvider =
+                new MainTabModelProvider<>(eventBus, 
defaultConfirmPopupProvider, commonModelProvider);
+        mainTabSessionModelProvider.setModelProvider(modelProvider);
+        return mainTabSessionModelProvider;
+    }
+
+    @Override
+    protected void configure() {
+        bind(SessionListModel.class).in(Singleton.class);
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabSessionPresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabSessionPresenter.java
new file mode 100644
index 0000000..e7c4739
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabSessionPresenter.java
@@ -0,0 +1,68 @@
+package org.ovirt.engine.ui.webadmin.section.main.presenter.tab;
+
+import java.util.List;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.gwtplatform.dispatch.annotation.GenEvent;
+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.TabInfo;
+import com.gwtplatform.mvp.client.proxy.PlaceManager;
+import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace;
+import com.gwtplatform.mvp.shared.proxy.PlaceRequest;
+import org.ovirt.engine.core.common.businessentities.EngineSession;
+import org.ovirt.engine.ui.common.place.PlaceRequestFactory;
+import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
+import org.ovirt.engine.ui.common.widget.tab.ModelBoundTabData;
+import org.ovirt.engine.ui.uicommonweb.models.SessionListModel;
+import org.ovirt.engine.ui.uicommonweb.place.WebAdminApplicationPlaces;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.AbstractMainTabWithDetailsPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.MainTabPanelPresenter;
+
+public class MainTabSessionPresenter
+        extends AbstractMainTabWithDetailsPresenter<EngineSession, 
SessionListModel, MainTabSessionPresenter.ViewDef, 
MainTabSessionPresenter.ProxyDef> {
+
+    @GenEvent
+    public class SessionSelectionChange {
+
+        List<EngineSession> selectedItems;
+
+    }
+
+    @Inject
+    public MainTabSessionPresenter(EventBus eventBus,
+            ViewDef view,
+            ProxyDef proxy,
+            PlaceManager placeManager,
+            MainModelProvider<EngineSession, SessionListModel> modelProvider) {
+        super(eventBus, view, proxy, placeManager, modelProvider);
+    }
+
+    @TabInfo(container = MainTabPanelPresenter.class)
+    static TabData getTabData(ApplicationConstants applicationConstants,
+            MainModelProvider<EngineSession, SessionListModel> modelProvider) {
+        return new 
ModelBoundTabData(applicationConstants.sessionMainTabLabel(), 1, modelProvider);
+    }
+
+    @Override
+    protected void fireTableSelectionChangeEvent() {
+        SessionSelectionChangeEvent.fire(this, getSelectedItems());
+    }
+
+    @Override
+    protected PlaceRequest getMainTabRequest() {
+        return 
PlaceRequestFactory.get(WebAdminApplicationPlaces.sessionMainTabPlace);
+    }
+
+    @ProxyCodeSplit
+    @NameToken(WebAdminApplicationPlaces.sessionMainTabPlace)
+    public interface ProxyDef extends 
TabContentProxyPlace<MainTabSessionPresenter> {
+    }
+
+    public interface ViewDef extends 
AbstractMainTabWithDetailsPresenter.ViewDef<EngineSession> {
+    }
+}
+
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabSessionView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabSessionView.java
new file mode 100644
index 0000000..90958d2
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabSessionView.java
@@ -0,0 +1,77 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.tab;
+
+import com.google.gwt.core.client.GWT;
+import com.google.inject.Inject;
+import org.ovirt.engine.core.common.businessentities.EngineSession;
+import org.ovirt.engine.core.searchbackend.SessionConditionFieldAutoCompleter;
+import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
+import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
+import 
org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumnWithTooltip;
+import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.models.SessionListModel;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationResources;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabSessionPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.AbstractMainTabWithDetailsTableView;
+import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition;
+
+public class MainTabSessionView extends 
AbstractMainTabWithDetailsTableView<EngineSession, SessionListModel>
+        implements MainTabSessionPresenter.ViewDef {
+
+    private final ApplicationConstants constants;
+
+    @Inject
+    public MainTabSessionView(MainModelProvider<EngineSession, 
SessionListModel> modelProvider,
+            ApplicationConstants constants,
+            ApplicationResources resources) {
+        super(modelProvider);
+        this.constants = constants;
+        ViewIdHandler.idHandler.generateAndSetIds(this);
+        initTable();
+        initWidget(getTable());
+    }
+
+    void initTable() {
+        getTable().enableColumnResizing();
+
+        AbstractTextColumnWithTooltip<EngineSession> sessionDbIdColumn =
+                new AbstractTextColumnWithTooltip<EngineSession>() {
+                    @Override
+                    public String getValue(EngineSession session) {
+                        return Long.toString(session.getId());
+                    }
+                };
+        getTable().addColumn(sessionDbIdColumn, constants.sessionDbId(), 
"100px"); //$NON-NLS-1$
+
+        AbstractTextColumnWithTooltip<EngineSession> userNameColumn =
+                new AbstractTextColumnWithTooltip<EngineSession>() {
+                    @Override
+                    public String getValue(EngineSession session) {
+                        return session.getUserName();
+                    }
+                };
+        
userNameColumn.makeSortable(SessionConditionFieldAutoCompleter.USER_NAME);
+        getTable().addColumn(userNameColumn, constants.userNameUser(), 
"200px"); //$NON-NLS-1$
+
+        AbstractTextColumnWithTooltip<EngineSession> userIdColumn = new 
AbstractTextColumnWithTooltip<EngineSession>() {
+            @Override
+            public String getValue(EngineSession session) {
+                return session.getUserId().toString();
+            }
+        };
+        userIdColumn.makeSortable(SessionConditionFieldAutoCompleter.USER_ID);
+        getTable().addColumn(userNameColumn, constants.userId(), "200px"); 
//$NON-NLS-1$
+
+        getTable().addActionButton(new 
WebAdminButtonDefinition<EngineSession>(constants.terminateSession()) {
+            @Override
+            protected UICommand resolveCommand() {
+                return getMainModel().getTerminateCommand();
+            }
+        });
+    }
+
+    interface ViewIdHandler extends ElementIdHandler<MainTabSessionView> {
+        ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTreeItemCell.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTreeItemCell.java
index cfdaaa2..f3a12c5 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTreeItemCell.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/tree/SystemTreeItemCell.java
@@ -96,6 +96,9 @@
         case Providers:
             imageResource = applicationResources.providersImage();
             break;
+        case Sessions:
+            imageResource = applicationResources.userImage();
+            break;
 
         default:
             imageResource = applicationResources.questionMarkImage();


-- 
To view, visit https://gerrit.ovirt.org/38384
To unsubscribe, visit https://gerrit.ovirt.org/settings

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

Reply via email to