Hello community,
here is the log from the commit of package openSUSE-release-tools for
openSUSE:Factory checked in at 2018-03-08 11:00:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools"
Thu Mar 8 11:00:06 2018 rev:66 rq:584104 version:20180307.d30db7e
Changes:
--------
---
/work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes
2018-03-07 10:40:05.066776805 +0100
+++
/work/SRC/openSUSE:Factory/.openSUSE-release-tools.new/openSUSE-release-tools.changes
2018-03-08 11:00:22.299106798 +0100
@@ -1,0 +2,11 @@
+Wed Mar 07 19:49:21 UTC 2018 - [email protected]
+
+- Update to version 20180307.d30db7e:
+ * repo_checker: provide comment command to skip-cycle for group.
+ * repo_checker: utilize ReviewBot.comment_api instead of new instance.
+ * ReviewBot: provide comment command override.
+ * osclib/core: maintainers_get(): utilize new group_members() function.
+ * osclib/core: provide group_members() function.
+ * osclib/comments: provide command_find() for comment commands.
+
+-------------------------------------------------------------------
Old:
----
openSUSE-release-tools-20180306.a9ec91f.obscpio
New:
----
openSUSE-release-tools-20180307.d30db7e.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.MGE4fy/_old 2018-03-08 11:00:24.095041887 +0100
+++ /var/tmp/diff_new_pack.MGE4fy/_new 2018-03-08 11:00:24.099041743 +0100
@@ -20,7 +20,7 @@
%define source_dir osc-plugin-factory
%define announcer_filename factory-package-news
Name: openSUSE-release-tools
-Version: 20180306.a9ec91f
+Version: 20180307.d30db7e
Release: 0
Summary: Tools to aid in staging and release work for openSUSE/SUSE
License: GPL-2.0-or-later AND MIT
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.MGE4fy/_old 2018-03-08 11:00:24.147040009 +0100
+++ /var/tmp/diff_new_pack.MGE4fy/_new 2018-03-08 11:00:24.147040009 +0100
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param
name="url">https://github.com/openSUSE/osc-plugin-factory.git</param>
- <param
name="changesrevision">3c25b8a8a4984d28b04b3b94871cfa427138f298</param>
+ <param
name="changesrevision">d30db7eb1d8572d7bb8aae01fca9a0e92228904b</param>
</service>
</servicedata>
++++++ openSUSE-release-tools-20180306.a9ec91f.obscpio ->
openSUSE-release-tools-20180307.d30db7e.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openSUSE-release-tools-20180306.a9ec91f/ReviewBot.py
new/openSUSE-release-tools-20180307.d30db7e/ReviewBot.py
--- old/openSUSE-release-tools-20180306.a9ec91f/ReviewBot.py 2018-03-06
21:47:31.000000000 +0100
+++ new/openSUSE-release-tools-20180307.d30db7e/ReviewBot.py 2018-03-07
20:41:31.000000000 +0100
@@ -28,6 +28,7 @@
from collections import OrderedDict
from osclib.comments import CommentAPI
from osclib.conf import Config
+from osclib.core import group_members
from osclib.memoize import memoize
from osclib.stagingapi import StagingAPI
import signal
@@ -84,6 +85,8 @@
self.only_one_action = False
self.request_default_return = None
self.comment_handler = False
+ self.override_allow = True
+ self.override_group_key =
'{}-override-group'.format(self.bot_name.lower())
self.load_config()
@@ -141,7 +144,12 @@
for req in self.requests:
self.logger.info("checking %s"%req.reqid)
self.request = req
- good = self.check_one_request(req)
+
+ override = self.request_override_check(req)
+ if override is not None:
+ good = override
+ else:
+ good = self.check_one_request(req)
if self.review_mode == 'no':
good = None
@@ -155,6 +163,40 @@
elif self.review_mode != 'accept-onpass':
self._set_review(req, 'declined')
+ @memoize(session=True)
+ def request_override_check_users(self, project):
+ """Determine users allowed to override review in a comment command."""
+ self.staging_api(project)
+ config = self.staging_config[project]
+
+ users = group_members(self.apiurl, config['staging-group'])
+
+ if self.override_group_key:
+ override_group = config.get(self.override_group_key)
+ if override_group:
+ users += group_members(self.apiurl, override_group)
+
+ return users
+
+ def request_override_check(self, request):
+ """Check for a comment command requesting review override."""
+ if not self.override_allow:
+ return None
+
+ comments = self.comment_api.get_comments(request_id=request.reqid)
+ users =
self.request_override_check_users(request.actions[0].tgt_project)
+ for args, who in self.comment_api.command_find(
+ comments, self.review_user, 'override', users):
+ message = 'overridden by {}'.format(who)
+ override = args[1] or None
+ if override == 'accept':
+ self.review_messages['accepted'] = message
+ return True
+
+ if override == 'decline':
+ self.review_messages['declined'] = message
+ return False
+
def _set_review(self, req, state):
doit = self.can_accept_review(req.reqid)
if doit is None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180306.a9ec91f/legal-auto.py
new/openSUSE-release-tools-20180307.d30db7e/legal-auto.py
--- old/openSUSE-release-tools-20180306.a9ec91f/legal-auto.py 2018-03-06
21:47:31.000000000 +0100
+++ new/openSUSE-release-tools-20180307.d30db7e/legal-auto.py 2018-03-07
20:41:31.000000000 +0100
@@ -59,6 +59,7 @@
self.apinick = 'ibs#'
else:
self.apinick = 'obs#'
+ self.override_allow = False # Handled via external tool.
def request_priority(self):
prio = self.request.priority or 'moderate'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180306.a9ec91f/osclib/comments.py
new/openSUSE-release-tools-20180307.d30db7e/osclib/comments.py
--- old/openSUSE-release-tools-20180306.a9ec91f/osclib/comments.py
2018-03-06 21:47:31.000000000 +0100
+++ new/openSUSE-release-tools-20180307.d30db7e/osclib/comments.py
2018-03-07 20:41:31.000000000 +0100
@@ -112,6 +112,33 @@
return c, info
return None, None
+ def command_find(self, comments, user, command=None, who_allowed=None):
+ """
+ Find comment commands with the optional conditions.
+
+ Usage (in comment):
+ @<user> <command> [args...]
+ """
+ command_re = re.compile(r'^@(?P<user>[^ ]+) (?P<args>.*)$')
+
+ # Search for commands in the order the comment was created.
+ for comment in sorted(comments.values(), key=lambda c: c['when']):
+ if who_allowed and comment['who'] not in who_allowed:
+ continue
+
+ match = command_re.search(comment['comment'])
+ if not match:
+ continue
+
+ if match.group('user') != user:
+ continue
+
+ args = match.group('args').strip().split(' ')
+ if command and (args[0] or None) != command:
+ continue
+
+ yield args, comment['who']
+
def add_marker(self, comment, bot, info=None):
"""Add bot marker to comment that can be used to find comment."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180306.a9ec91f/osclib/conf.py
new/openSUSE-release-tools-20180307.d30db7e/osclib/conf.py
--- old/openSUSE-release-tools-20180306.a9ec91f/osclib/conf.py 2018-03-06
21:47:31.000000000 +0100
+++ new/openSUSE-release-tools-20180307.d30db7e/osclib/conf.py 2018-03-07
20:41:31.000000000 +0100
@@ -67,6 +67,7 @@
'openqa': 'https://openqa.opensuse.org',
'lock': 'openSUSE:%(project)s:Staging',
'lock-ns': 'openSUSE',
+ 'leaper-override-group': 'leap-reviewers',
'delreq-review': None,
'main-repo': 'standard',
'download-baseurl':
'http://download.opensuse.org/distribution/leap/%(version)s/',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180306.a9ec91f/osclib/core.py
new/openSUSE-release-tools-20180307.d30db7e/osclib/core.py
--- old/openSUSE-release-tools-20180306.a9ec91f/osclib/core.py 2018-03-06
21:47:31.000000000 +0100
+++ new/openSUSE-release-tools-20180307.d30db7e/osclib/core.py 2018-03-07
20:41:31.000000000 +0100
@@ -20,6 +20,15 @@
RPM_REGEX = BINARY_REGEX + '\.rpm'
BinaryParsed = namedtuple('BinaryParsed', ('package', 'filename', 'name',
'arch'))
+@memoize(session=True)
+def group_members(apiurl, group, maintainers=False):
+ url = makeurl(apiurl, ['group', group])
+ root = ETL.parse(http_GET(url)).getroot()
+
+ if maintainers:
+ return root.xpath('maintainer/@userid')
+
+ return root.xpath('person/person/@userid')
@memoize(session=True)
def owner_fallback(apiurl, project, package):
@@ -40,9 +49,7 @@
maintainers = [p.get('name') for p in root.findall('.//person') if
p.get('role') == 'maintainer']
if not maintainers:
for group in [p.get('name') for p in root.findall('.//group') if
p.get('role') == 'maintainer']:
- url = makeurl(apiurl, ('group', group))
- root = ET.parse(http_GET(url)).getroot()
- maintainers = maintainers + [p.get('userid') for p in
root.findall('./person/person')]
+ maintainers = maintainers + group_members(apiurl, group)
return maintainers
@memoize(session=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180306.a9ec91f/repo_checker.py
new/openSUSE-release-tools-20180307.d30db7e/repo_checker.py
--- old/openSUSE-release-tools-20180306.a9ec91f/repo_checker.py 2018-03-06
21:47:31.000000000 +0100
+++ new/openSUSE-release-tools-20180307.d30db7e/repo_checker.py 2018-03-07
20:41:31.000000000 +0100
@@ -121,6 +121,7 @@
self.requests_map = {}
self.groups = {}
self.groups_build = {}
+ self.groups_skip_cycle = []
# Manipulated in ensure_group().
self.group = None
@@ -181,12 +182,19 @@
self.groups_build[group] =
hashlib.sha1(''.join(builds)).hexdigest()[:7]
# Determine if build has changed since last comment.
- comment_api = CommentAPI(api.apiurl)
- comments = comment_api.get_comments(project_name=group)
- _, info = comment_api.comment_find(comments, self.bot_name)
+ comments = self.comment_api.get_comments(project_name=group)
+ _, info = self.comment_api.comment_find(comments,
self.bot_name)
if info and self.groups_build[group] == info.get('build'):
skip_build.add(group)
+ # Look for skip-cycle comment command.
+ users =
self.request_override_check_users(request.actions[0].tgt_project)
+ for _, who in self.comment_api.command_find(
+ comments, self.review_user, 'skip-cycle', users):
+ self.logger.debug('comment command: skip-cycle by
{}'.format(who))
+ self.groups_skip_cycle.append(group)
+ break
+
if not self.force and group in skip_build:
self.logger.debug('{}: {} build
unchanged'.format(request.reqid, group))
continue
@@ -419,8 +427,8 @@
yield InstallSection(section, text)
def cycle_check(self, project, stagings, arch):
- if self.skip_cycle:
- self.logger.info('cycle check: skip due to --skip-cycle')
+ if self.skip_cycle or self.group in self.groups_skip_cycle:
+ self.logger.info('cycle check: skip due to --skip-cycle or comment
command')
return CheckResult(True, None)
self.logger.info('cycle check: start')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180306.a9ec91f/tests/checktags_tests.py
new/openSUSE-release-tools-20180307.d30db7e/tests/checktags_tests.py
--- old/openSUSE-release-tools-20180306.a9ec91f/tests/checktags_tests.py
2018-03-06 21:47:31.000000000 +0100
+++ new/openSUSE-release-tools-20180307.d30db7e/tests/checktags_tests.py
2018-03-07 20:41:31.000000000 +0100
@@ -60,6 +60,7 @@
self.checker = TagChecker(apiurl=APIURL,
user='maintbot',
logger=self.logger)
+ self.checker.override_allow = False # Test setup cannot handle.
self._request_data = """
<request id="293129" creator="darix">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180306.a9ec91f/tests/factory_source_tests.py
new/openSUSE-release-tools-20180307.d30db7e/tests/factory_source_tests.py
--- old/openSUSE-release-tools-20180306.a9ec91f/tests/factory_source_tests.py
2018-03-06 21:47:31.000000000 +0100
+++ new/openSUSE-release-tools-20180307.d30db7e/tests/factory_source_tests.py
2018-03-07 20:41:31.000000000 +0100
@@ -57,6 +57,7 @@
self.checker = FactorySourceChecker(apiurl = APIURL, \
user = 'factory-source', \
logger = self.logger)
+ self.checker.override_allow = False # Test setup cannot handle.
def test_accept_request(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180306.a9ec91f/tests/maintenance_tests.py
new/openSUSE-release-tools-20180307.d30db7e/tests/maintenance_tests.py
--- old/openSUSE-release-tools-20180306.a9ec91f/tests/maintenance_tests.py
2018-03-06 21:47:31.000000000 +0100
+++ new/openSUSE-release-tools-20180307.d30db7e/tests/maintenance_tests.py
2018-03-07 20:41:31.000000000 +0100
@@ -55,6 +55,7 @@
self.checker = MaintenanceChecker(apiurl = APIURL, \
user = 'maintbot', \
logger = self.logger)
+ self.checker.override_allow = False # Test setup cannot handle.
def test_non_maintainer_submit(self):
"""same as above but already has devel project as reviewer
++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.MGE4fy/_old 2018-03-08 11:00:25.047007481 +0100
+++ /var/tmp/diff_new_pack.MGE4fy/_new 2018-03-08 11:00:25.051007336 +0100
@@ -1,5 +1,5 @@
name: openSUSE-release-tools
-version: 20180306.a9ec91f
-mtime: 1520369251
-commit: a9ec91f3a82884106491d8c6d4bc6624f813a38c
+version: 20180307.d30db7e
+mtime: 1520451691
+commit: d30db7eb1d8572d7bb8aae01fca9a0e92228904b