def token_reporting(event, tokenrealms): """ log token events into reporting table :param event: the event that happened, e.g. init token, delete token :param tokenrealms: the realm on which the event happened :return: nothing """ realms = tokenrealms if not tokenrealms or len(tokenrealms) == 0: realms = ['/:no realm:/'] elif not isinstance(tokenrealms, (list, tuple)): realms = [tokenrealms] for realm in realms: action = check_token_reporting(realm) mh = MonitorHandler() counters = mh.token_count(realm, action[:]) for key, val in counters.items(): report = Reporting(event=event, realm=realm, parameter=key, count=val) try: Session.add(report) except Exception as exce: log.exception('Error during saving report. Exception was: ' '%r' % exce)
def token_reporting(event, tokenrealms): """ log token events into reporting table :param event: the event that happened, e.g. init token, delete token :param tokenrealms: the realm on which the event happened :return: nothing """ realms = tokenrealms if not tokenrealms or len(tokenrealms) == 0: realms = ['/:no realm:/'] elif not isinstance(tokenrealms, (list, tuple)): realms = [tokenrealms] for realm in realms: action = check_token_reporting(realm) mh = MonitorHandler() counters = mh.token_count(realm, action[:]) for key, val in counters.items(): report = Reporting( event=event, realm=realm, parameter=key, count=val) try: Session.add(report) except Exception as exce: log.exception('[save]Error during saving Report: %r' % exce)
def tokens(self): """ method: monitoring/tokens description: Displays the number of tokens (with status) per realm (one token might be in multiple realms). The Summary gives the sum of all tokens in all given realms and might be smaller than the summ of all tokens as tokens which have two realms are only counted once! arguments: * status - optional: takes assigned or unassigned, give the number of tokens with this characteristic * realms - optional: takes realms, only the number of tokens in these realms will be displayed returns: a json result with: { "head": [], "data": [ [row1], [row2] .. ] } exception: if an error occurs an exception is serialized and returned """ result = {} try: param = request.params status = param.get('status', ['total']) if status != ['total']: status = status.split(',') status.append('total') request_realms = param.get('realms', '').split(',') monit_handler = MonitorHandler() realm_whitelist = [] policies = getAdminPolicies('tokens', scope='monitoring') if policies['active'] and policies['realms']: realm_whitelist = policies.get('realms') # if there are no policies for us, we are allowed to see all realms if not realm_whitelist or '*' in realm_whitelist: realm_whitelist = request_context['Realms'].keys() realms = match_realms(request_realms, realm_whitelist) realm_info = {} for a_realm in realms: token_count = monit_handler.token_count([a_realm], status) realm_info[a_realm] = token_count result[_('Summary')] = monit_handler.token_count(realms, status) result[_('Realms')] = realm_info Session.commit() return sendResult(response, result) except PolicyException as policy_exception: log.exception(policy_exception) Session.rollback() return sendError(response, unicode(policy_exception), 1) except Exception as exc: log.exception(exc) Session.rollback() return sendError(response, exc) finally: Session.close() log.debug('[tokens] done')
def tokens(self): """ method: monitoring/tokens description: Displays the number of tokens (with status) per realm (one token might be in multiple realms). The Summary gives the sum of all tokens in all given realms and might be smaller than the summ of all tokens as tokens which have two realms are only counted once! arguments: * status - optional: takes assigned or unassigned, give the number of tokens with this characteristic * realms - optional: takes realms, only the number of tokens in these realms will be displayed returns: a json result with: { "head": [], "data": [ [row1], [row2] .. ] } exception: if an error occurs an exception is serialized and returned """ result = {} try: param = request.params status = param.get('status', ['total']) if status != ['total']: status = status.split(',') status.append('total') request_realms = param.get('realms', '').split(',') monit_handler = MonitorHandler() realm_whitelist = [] policies = getAdminPolicies('tokens', scope='monitoring') if policies['active'] and policies['realms']: realm_whitelist = policies.get('realms') # if there are no policies for us, we are allowed to see all realms if not realm_whitelist or '*' in realm_whitelist: realm_whitelist = request_context['Realms'].keys() realms = match_realms(request_realms, realm_whitelist) realm_info = {} for a_realm in realms: token_count = monit_handler.token_count([a_realm], status) realm_info[a_realm] = token_count result['Summary'] = monit_handler.token_count(realms, status) result['Realms'] = realm_info Session.commit() return sendResult(response, result) except PolicyException as policy_exception: log.exception(policy_exception) Session.rollback() return sendError(response, unicode(policy_exception), 1) except Exception as exc: log.exception(exc) Session.rollback() return sendError(response, exc) finally: Session.close()
def tokens(self): """ method: monitoring/tokens description: Displays the number of tokens (with status) per realm (one token might be in multiple realms). The Summary gives the sum of all tokens in all given realms and might be smaller than the summ of all tokens as tokens which have two realms are only counted once! arguments: * status - optional: takes assigned or unassigned, give the number of tokens with this characteristic * realms - optional: takes realms, only the number of tokens in these realms will be displayed returns: a json result with: { "head": [], "data": [ [row1], [row2] .. ] } exception: if an error occurs an exception is serialized and returned """ result = {} try: # extract and strip the list of requested statuses + default # statuses and ignore empty values. status_params = self.request_params.get("status", "").split(",") status = list( set( ["total", "total users"] + [s.strip() for s in status_params if s.strip()] ) ) request_realms = self.request_params.get("realms", "").split(",") monit_handler = MonitorHandler() realm_whitelist = [] policies = getAdminPolicies("tokens", scope="monitoring") if policies["active"] and policies["realms"]: realm_whitelist = policies.get("realms") # if there are no policies for us, we are allowed to see all realms if not realm_whitelist or "*" in realm_whitelist: realm_whitelist = list(request_context["Realms"].keys()) realms = match_realms(request_realms, realm_whitelist) realm_info = {} for a_realm in realms: token_count = monit_handler.token_count([a_realm], status) realm_info[a_realm] = token_count result["Summary"] = monit_handler.token_count(realms, status) result["Realms"] = realm_info db.session.commit() return sendResult(response, result) except PolicyException as policy_exception: log.error(policy_exception) db.session.rollback() return sendError(response, policy_exception, 1) except Exception as exc: log.error(exc) db.session.rollback() return sendError(response, exc)