From f9795a8b783917f51d0179df98632cdb58e6019f Mon Sep 17 00:00:00 2001 From: Marin Atanasov Nikolov Date: Wed, 24 Sep 2014 11:18:35 +0300 Subject: [PATCH] Implement 'session.get' vPoller method for getting the established sessions --- src/vpoller/agent.py | 61 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/vpoller/agent.py b/src/vpoller/agent.py index 2b1bf42..1f7de11 100644 --- a/src/vpoller/agent.py +++ b/src/vpoller/agent.py @@ -87,6 +87,10 @@ def __init__(self, user, pwd, host): 'method': self.event_latest, 'required': ['hostname'], }, + 'session.get': { + 'method': self.session_get, + 'required': ['hostname'], + }, 'net.discover': { 'method': self.net_discover, 'required': ['hostname'], @@ -513,6 +517,63 @@ def about(self, msg): return result + def session_get(self, msg): + """ + Get the established vSphere sessions + + Example client message would be: + + { + "method": "session.get", + "hostname": "vc01.example.org", + } + + Returns: + The established vSphere sessions in JSON format + + """ + logging.info('[%s] Retrieving established sessions', self.host) + + try: + sm = self.si.content.sessionManager + session_list = sm.sessionList + except pyVmomi.vim.NoPermission: + return { + 'msg': 'No permissions to view established sessions', + 'success': 1 + } + + # Session properties to be collected + props = [ + 'key', + 'userName', + 'fullName', + 'loginTime', + 'lastActiveTime', + 'ipAddress', + 'userAgent', + 'callCount' + ] + + sessions = [] + for session in session_list: + s = {k: str(getattr(session, k)) for k in props} + sessions.append(s) + + result = { + 'msg': 'Successfully retrieved sessions', + 'success': 0, + 'result': sessions, + } + + logging.debug( + '[%s] Returning result from operation: %s', + self.host, + result + ) + + return result + def net_discover(self, msg): """ Discover all pyVmomi.vim.Network managed objects