Skip to content
Snippets Groups Projects
Unverified Commit 8eb327f3 authored by PICHOU Kyâne's avatar PICHOU Kyâne
Browse files

Comment Wekan private boards part

parent 8c735c1f
No related branches found
Tags v1.1
No related merge requests found
......@@ -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.
......
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment