aboutsummaryrefslogtreecommitdiffstats
path: root/nextcloud_users
diff options
context:
space:
mode:
authornico <nico@magicbroccoli.de>2018-10-23 23:59:09 +0200
committernico <nico@magicbroccoli.de>2018-10-23 23:59:09 +0200
commit524242c5e88a265d86946eee6eadf9f7ed1f7c74 (patch)
treed92596785ad35fb9139e8c24162630915924ed60 /nextcloud_users
parent3eafd661ad37d4bdc605ac43df1be01eb5aee81e (diff)
parentb76ec89c3abd8d2df628fae02fc7b1f685a8d245 (diff)
Merge branch 'dev'
+ added min value + added version check for the updates_available graph * all plugin configs updated * optimized requests.session code * used os.environ.get to simplify code * simplified self.run code * reduced code clutter * replaced for iterations with list comprehension * updated config - removed code clutter
Diffstat (limited to 'nextcloud_users')
-rwxr-xr-xnextcloud_users66
1 files changed, 31 insertions, 35 deletions
diff --git a/nextcloud_users b/nextcloud_users
index 1e62dc3..350f14e 100755
--- a/nextcloud_users
+++ b/nextcloud_users
@@ -22,17 +22,20 @@ class NextcloudUsers:
config = {
'users': [
'graph_title Nextcloud User Activity',
- 'graph_args --base 1024 -l 0',
+ 'graph_args --base 1000 -l 0',
'graph_printf %.0lf',
'graph_vlabel connected users',
'graph_info graph showing the number of connected user',
'graph_category nextcloud',
'last5minutes.label last 5 minutes',
'last5minutes.info users connected in the last 5 minutes',
+ 'last5minutes.min 0',
'last1hour.label last hour',
'last1hour.info users connected in the last hour',
+ 'last1hour.min 0',
'last24hours.label last 24 hours',
- 'last24hours.info users connected in the last 24 hours'
+ 'last24hours.info users connected in the last 24 hours',
+ 'last24hours.min 0'
]
}
@@ -42,36 +45,33 @@ class NextcloudUsers:
data ={
'nextcloud_users': [],
}
+ # users
users = api_response['ocs']['data']['activeUsers']
- for key in users.keys():
- data['nextcloud_users'].append(str(key) + ".value " + str(users[key]))
+ # append for every key in users the key and the value to the results
+ [data['nextcloud_users'].append(str(key) + ".value " + str(users[key]))
+ for key in users.keys()]
return data
def run(self):
- # read the configuration from munin environment
- URL = os.environ['url']
- auth = (os.environ['username'], os.environ['password'])
-
- # init requests session with specific header and credentials
+ # init request session with specific header and credentials
with requests.Session() as s:
- s.auth = auth
+ # read credentials from env
+ s.auth = (os.environ.get('username'), os.environ.get('password'))
+
+ # update header for json
s.headers.update({'Accept': 'application/json'})
- s.stream = False
- # request data from api
- r = s.get(URL)
+ # request the data
+ r = s.get(os.environ.get('url'))
- # if status code is successful close connection and continue
+ # if status code is successful continue
if r.status_code == 200:
- s.close()
- api_response = r.json()
+ result = self.get_data(r.json())
- result = self.get_data(api_response)
-
- for key in result.keys():
- print('\n'.join(result[key]))
+ # for key in results print every entry in dict
+ [print('\n'.join(result[key])) for key in result.keys()]
elif r.status_code == 996:
print('server error')
@@ -83,26 +83,22 @@ class NextcloudUsers:
print('unknown error')
def main(self):
- if (sys.argv.__len__() == 2) and (sys.argv[1] == "config"):
- for key in self.config().keys():
- print('\n'.join(self.config()[key]))
- try:
- if os.environ['MUNIN_CAP_DIRTYCONFIG'] == '1':
+ # check if any argument is given
+ if sys.argv.__len__() >= 2:
+ # check if first argument is config or autoconf if not fetch data
+ if sys.argv[1] == "config":
+ # for key in config().keys() print every entry in dict
+ [print('\n'.join(self.config()[key])) for key in self.config().keys()]
+ if os.environ.get('MUNIN_CAP_DIRTYCONFIG') == '1':
self.run()
- except KeyError:
- pass
-
- elif (sys.argv.__len__() == 2) and (sys.argv[1] == 'autoconf'):
- # check host if env variables are set
- try:
- if None not in {os.environ['url'], os.environ['username'], os.environ['password']}:
+ elif sys.argv[1] == 'autoconf':
+ if None in [os.environ.get('username'), os.environ.get('password')]:
+ print('env variables are missing')
+ else:
print('yes')
- except KeyError:
- print('no env configuration options are missing')
else:
self.run()
if __name__ == "__main__":
NextcloudUsers().main()
- quit(0)