diff --git a/README.md b/README.md index 7bc577fd4f39f67f61b20db4cea7c0d84b476d14..b1eca4ac98b0328723e0f5631a0dd1650fd6e3b6 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,7 @@ Mattermost module exports following metrics : - `wekan_total_users` : Number of users on the instance - `wekan_public_boards` : Number of public boards on the instance -- `wekan_private_boards` : Number of private channels on the instance +<!-- - `wekan_private_boards` : Number of private channels on the instance --> Each metric have a `name` tag with the name of the instance. diff --git a/wekan/wekan.py b/wekan/wekan.py index c6fbd4e9165430ce7c05701c72d09a1f8ab38504..070834dfe625e02bb36e83b254785363aad2ce5d 100644 --- a/wekan/wekan.py +++ b/wekan/wekan.py @@ -8,6 +8,7 @@ import requests from urllib.parse import urlparse import sys + class WekanCollector(): """ WekanCollector. @@ -67,16 +68,16 @@ class WekanCollector(): 'value': data['publicBoards'] } }) - metrics.append({ - 'measurement': 'wekan_private_boards', - 'tags': { - 'name': instance['name'] - }, - 'time': current_timestamp, - 'fields': { - 'value': data['privateBoards'] - } - }) + # metrics.append({ + # 'measurement': 'wekan_private_boards', + # 'tags': { + # 'name': instance['name'] + # }, + # 'time': current_timestamp, + # 'fields': { + # 'value': data['privateBoards'] + # } + # }) print("Wekan : data collected for instance {}".format(instance['name'])) return metrics @@ -89,10 +90,10 @@ class WekanCollector(): :returns: Authentication token """ login = requests.post(instance['url'] + '/users/login', - data={ - "username": instance['user'], - "password": instance['password'] - }) + data={ + "username": instance['user'], + "password": instance['password'] + }) if login.status_code != 200: print('Unable to login to {} instance : {}'.format(instance['url'], login.reason)) @@ -127,24 +128,25 @@ class WekanCollector(): else: data['publicBoards'] = len(public_boards) - # API does not have a method to get all boards, so first get - # boards for each users - all_boards = [] - for user in users: - boards = requests.get(instance['url'] + f'/api/users/{user["_id"]}/boards', headers=headers).json() - if isinstance(public_boards, dict) and public_boards.get('statusCode', 200) != 200: - print('Unable to get public boards from {} instance : {}'.format(instance['url'], public_boards['reason'])) - else: - # Then remove default boards (we don't care) - for e in boards: - if e['title'] == 'Welcome Board' or e['title'] == 'Templates': - boards.remove(e) - all_boards.extend(boards) - - # Finally filter unique boards - all_boards_unique = list({v['_id']: v for v in all_boards}.values()) - - # Then infer number of private boards from total boards - public boards - data['privateBoards'] = len(all_boards_unique) - len(public_boards) + # TODO This part takes a lot of times (about 8 minutes) to process. We should find another way to do this + # # API does not have a method to get all boards, so first get + # # boards for each users + # all_boards = [] + # for user in users: + # boards = requests.get(instance['url'] + f'/api/users/{user["_id"]}/boards', headers=headers).json() + # if isinstance(public_boards, dict) and public_boards.get('statusCode', 200) != 200: + # print('Unable to get public boards from {} instance : {}'.format(instance['url'], public_boards['reason'])) + # else: + # # Then remove default boards (we don't care) + # for e in boards: + # if e['title'] == 'Welcome Board' or e['title'] == 'Templates': + # boards.remove(e) + # all_boards.extend(boards) + + # # Finally filter unique boards + # all_boards_unique = list({v['_id']: v for v in all_boards}.values()) + + # # Then infer number of private boards from total boards - public boards + # data['privateBoards'] = len(all_boards_unique) - len(public_boards) return data