/
sketching.py
46 lines (37 loc) · 1.43 KB
/
sketching.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
# Copyright (c) 2014 Red Hat.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import re
from oslo.config import cfg
from scrapnfving.utils import launchpad
CONF = cfg.CONF
opts = [
cfg.StrOpt('pattern_reviews',
default="http[s]?://review.openstack.org/(?:#/c/)?([0-9]+)",
help='Regex pattern for searching review topics')
]
CONF.register_opts(opts, 'gerrit')
class Sketcher(object):
def __init__(self):
self.lp = launchpad.LaunchpadConnection(anon=True)
# NOTE(sbauza): We can also track Gerrit topics but they are less
# relevant because of some typos in topic names
self.re_reviews = re.compile(CONF.gerrit.pattern_reviews)
self.reviews = set()
def sketch(self, urls):
for url in urls:
bp_wb = self.lp.get_bp_whiteboard(url)
if bp_wb:
self.reviews.update(self.re_reviews.findall(bp_wb))
return self.reviews