LENS-1526 : Lens api to display number of sessions created per user
authorRajitha R <rajithar@apache.org>
Thu, 9 Aug 2018 07:55:20 +0000 (13:25 +0530)
committerRajitha.R <rajithar@IM0318-L0.corp.inmobi.com>
Thu, 9 Aug 2018 07:55:20 +0000 (13:25 +0530)
lens-server-api/src/main/java/org/apache/lens/server/api/session/SessionService.java
lens-server/src/main/java/org/apache/lens/server/BaseLensService.java
lens-server/src/main/java/org/apache/lens/server/session/SessionResource.java

index 20ec686..d96d430 100644 (file)
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.lens.api.LensSessionHandle;
+import org.apache.lens.api.session.SessionPerUserInfo;
 import org.apache.lens.api.session.UserSessionInfo;
 import org.apache.lens.server.api.error.LensException;
 
@@ -135,4 +136,10 @@ public interface SessionService {
    * @return a list of all sessions
    */
   List<UserSessionInfo> getSessionInfo();
+
+  /**
+   *
+   * @return a map of all session per loggedin user
+   */
+  List<SessionPerUserInfo> getSessionPerUser();
 }
index 006ee88..2598c2e 100644 (file)
@@ -38,6 +38,7 @@ import javax.ws.rs.core.Response;
 import org.apache.lens.api.LensConf;
 import org.apache.lens.api.LensSessionHandle;
 import org.apache.lens.api.auth.AuthScheme;
+import org.apache.lens.api.session.SessionPerUserInfo;
 import org.apache.lens.api.session.UserSessionInfo;
 import org.apache.lens.api.util.PathValidator;
 import org.apache.lens.server.api.LensConfConstants;
@@ -592,5 +593,18 @@ public abstract class BaseLensService extends CompositeService implements Extern
     }
     return userSessionInfoList;
   }
+
+  public List<SessionPerUserInfo> getSessionPerUser() {
+
+    List<SessionPerUserInfo> sessionsPerUserInfoList = new ArrayList<>();
+    for (Map.Entry<String, Integer> sessionsPerUser : SESSIONS_PER_USER.entrySet()) {
+      SessionPerUserInfo sessionPerUserInfo = new SessionPerUserInfo();
+      sessionPerUserInfo.setUser(sessionsPerUser.getKey());
+      sessionPerUserInfo.setSessionCount(sessionsPerUser.getValue());
+      sessionsPerUserInfoList.add(sessionPerUserInfo);
+    }
+
+    return sessionsPerUserInfoList;
+  }
 }
 
index dfecba5..832751c 100644 (file)
@@ -47,6 +47,7 @@ import org.apache.lens.api.LensConf;
 import org.apache.lens.api.LensSessionHandle;
 import org.apache.lens.api.StringList;
 import org.apache.lens.api.auth.AuthScheme;
+import org.apache.lens.api.session.SessionPerUserInfo;
 import org.apache.lens.api.session.UserSessionInfo;
 import org.apache.lens.server.LensServerConf;
 import org.apache.lens.server.LensServices;
@@ -319,6 +320,16 @@ public class SessionResource {
   }
 
   /**
+   * Returns a list of all session per loggedin user
+   */
+  @GET
+  @Path("sessionsperuser")
+  @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN })
+  public List<SessionPerUserInfo> getSessionsperUser() {
+    return sessionService.getSessionPerUser();
+  }
+
+  /**
    * Clears idle sessions. response will contain how many sessions were cleared.
    * @throws LensException
    */