Files
test-auth/tools/management/commands/munin.py

103 lines
3.2 KiB
Python
Executable File

#!/usr/bin/env python
import os
# Set niceness
os.nice(20)
# Activate the virtualenv
path = os.path.dirname(os.path.realpath(__file__))
activate_this = os.path.join(path, 'env/bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
import sys
import logging
from django.core.management import setup_environ
import settings
setup_environ(settings)
import getopt
from django.db.models import Count
from eve_api.app_defines import *
from eve_api.models import EVEAccount, EVEPlayerCorporation
from hr.app_defines import *
from hr.models import Application
from eve_proxy.models import CachedDocument
accepted_names = ['munin.py', 'auth_apikeys', 'auth_hrapplications',
'auth_eveapicache']
class Usage(Exception):
pass
def main(argv=None):
if argv is None:
argv = sys.argv
if os.path.basename(argv[0]) in accepted_names:
execname = os.path.basename(argv[0])
else:
print argv[0]
print >> sys.stderr, "Invalid symlink name, check the source"
return 2
try:
try:
opts, args = getopt.getopt(argv[1:], "", ["config"])
except getopt.error, msg:
raise Usage(msg)
# more code, unchanged
except Usage, err:
print >> sys.stderr, "Invalid usage"
return 2
for arg in args:
if arg == 'config':
if execname == 'auth_apikeys':
print "graph_title Auth Active EVE API Keys"
print "graph_vlabel Keys"
print "graph_category auth"
print "keys.label Keys"
print "graph_args --base 1000"
return 0
if execname == 'auth_hrapplications':
print "graph_title Auth - Open Applications"
print "graph_vlabel Applications"
print "graph_category auth"
for i, n in EVEPlayerCorporation.objects.filter(applications=True).values_list('id', 'name'):
print "%s.label %s" % (i, n)
print "%s.warning 10" % i
print "%s.critical 20" % i
print "graph_args --base 1000"
return 0
if execname == 'auth_eveapicache':
print "graph_title Auth - Cached EVE API Requests"
print "graph_vlabel Cached Requests"
print "graph_category auth"
print "requests.label Cached Requests"
print "graph_args --base 1000"
return 0
if execname == 'auth_apikeys':
key_count = EVEAccount.objects.filter(api_status=API_STATUS_OK).count()
print "keys.value %s" % key_count
elif execname == 'auth_hrapplications':
view_status = [APPLICATION_STATUS_AWAITINGREVIEW,
APPLICATION_STATUS_ACCEPTED, APPLICATION_STATUS_QUERY, APPLICATION_STATUS_FLAGGED]
corps = EVEPlayerCorporation.objects.filter(applications=True, application__status__in=view_status).annotate(num_apps=Count('application')).values_list('id', 'num_apps')
for c,n in corps:
print "%s.value %s" % (c, n)
elif execname == 'auth_eveapicache':
print "requests.value %s" % CachedDocument.objects.count()
if __name__ == "__main__":
sys.exit(main())