/
launchpad_bugs_mariadb.py
executable file
·83 lines (68 loc) · 2.55 KB
/
launchpad_bugs_mariadb.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env python
import argparse
import json
import os
import sys
from datetime import datetime, timedelta
from launchpadlib.launchpad import Launchpad
cachedir = "{}/.launchpadlib/cache/".format(os.path.expanduser('~'))
def get_bugs(status, tag=None, previous_days=None):
launchpad = Launchpad.login_anonymously(
'OOOQ Ruck Rover', 'production', cachedir, version='devel')
project = launchpad.projects['tripleo']
# Filter by Status and Tag
if tag is not None and previous_days is None:
bugs = project.searchTasks(
status=status,
tags=tag)
# Filter by Status only
elif tag is None and previous_days is None:
bugs = project.searchTasks(
status=status)
# Filter by Status and Number of Days
elif tag is None and previous_days is not None:
days_to_search = datetime.utcnow() - timedelta(days=int(previous_days))
bugs = project.searchTasks(
status=status,
created_since=days_to_search)
# Filter by Tag, Status and Number of Days
elif tag is not None and previous_days is not None:
days_to_search = datetime.utcnow() - timedelta(days=int(previous_days))
bugs = project.searchTasks(
status=status,
created_since=days_to_search,
tags=tag)
else:
print("invalid combination of parameters")
sys.exit(1)
return bugs
def print_as_csv(bug_tasks):
if bug_tasks:
for bug_task in bug_tasks:
print(('{},{},{},{},"{}"').format(
bug_task.bug.id,
bug_task.status,
json.dumps(bug_task.bug.tags).replace(
',', ' ').replace(
'"', '').replace(
'[', '').replace(
']', ''),
bug_task.web_link,
json.dumps(bug_task.bug.title).replace(
'"', "'").replace(
"\\n", "").replace(
"\\", "")))
def main():
parser = argparse.ArgumentParser(
description="Print launchpad bugs as influxdb lines")
parser.add_argument('--tag')
parser.add_argument('--status', nargs='+',
default=['New', 'Triaged', 'In Progress',
'Confirmed', 'Fix Committed']),
parser.add_argument('--previous_days', default=365)
args = parser.parse_args()
print_as_csv(get_bugs(args.status,
args.tag,
args.previous_days))
if __name__ == '__main__':
main()