def userinfo(self): """ method: monitoring/userinfo description: for each realm, display the resolvers and the number of users per resolver arguments: * realms - optional: takes a realm, only information on this realm will be displayed returns: a json result with: { "head": [], "data": [ [row1], [row2] .. ] } """ result = {} try: request_realms = self.request_params.get("realms", "").split(",") monit_handler = MonitorHandler() policies = getAdminPolicies("userinfo", scope="monitoring") realm_whitelist = [] 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) if "/:no realm:/" in realms: realms.remove("/:no realm:/") realm_info = {} for a_realm in realms: realm_info[a_realm] = monit_handler.resolverinfo(a_realm) 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)
def userinfo(self): """ method: monitoring/userinfo description: for each realm, display the resolvers and the number of users per resolver arguments: * realms - optional: takes a realm, only information on this realm will be displayed returns: a json result with: { "head": [], "data": [ [row1], [row2] .. ] } """ result = {} try: param = request.params request_realms = param.get('realms', '').split(',') monit_handler = MonitorHandler() policies = getAdminPolicies('userinfo', scope='monitoring') realm_whitelist = [] 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: realm_info[a_realm] = monit_handler.resolverinfo(a_realm) 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('[resolvers] done')
def userinfo(self): """ method: monitoring/userinfo description: for each realm, display the resolvers and the number of users per resolver arguments: * realms - optional: takes a realm, only information on this realm will be displayed returns: a json result with: { "head": [], "data": [ [row1], [row2] .. ] } """ result = {} try: param = request.params request_realms = param.get('realms', '').split(',') monit_handler = MonitorHandler() policies = getAdminPolicies('userinfo', scope='monitoring') realm_whitelist = [] 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) if '/:no realm:/' in realms: realms.remove('/:no realm:/') realm_info = {} for a_realm in realms: realm_info[a_realm] = monit_handler.resolverinfo(a_realm) 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 userinfo(self): """ method: monitoring/userinfo description: for each realm, display the resolvers and the number of users per resolver arguments: * realms - optional: takes a realm, only information on this realm will be displayed returns: a json result with: { "head": [], "data": [ [row1], [row2] .. ] } """ result = {} try: param = request.params request_realms = param.get('realms', '').split(',') monit_handler = MonitorHandler() realm_whitelist = monit_handler.get_allowed_realms(action='userinfo') # by default we show all allowed realms realms = realm_whitelist # support for empty realms or no realms by realm = * if '*' in request_realms: realms.append('/:no realm:/') # other cases, we iterate through the realm list elif len(request_realms) > 0 and not (request_realms == ['']): realms = [] invalid_realms = [] for search_realm in request_realms: search_realm = search_realm.strip() if search_realm in realm_whitelist: realms.append(search_realm) elif search_realm == '/:no realm:/': realms.append(search_realm) else: invalid_realms.append(search_realm) if not realms and invalid_realms: raise PolicyException(_('You do not have the rights to ' 'monitor these realms: %r. ' 'Check the policies!') % invalid_realms) realm_info = {} for a_realm in realms: realm_info[a_realm] = monit_handler.resolverinfo(a_realm) 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('[resolvers] done')