Hello community, here is the log from the commit of package openSUSE-release-tools for openSUSE:Factory checked in at 2018-04-16 12:47:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old) and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools" Mon Apr 16 12:47:46 2018 rev:80 rq:595658 version:20180411.820d103 Changes: -------- --- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2018-04-07 20:55:30.689746959 +0200 +++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new/openSUSE-release-tools.changes 2018-04-16 12:48:01.755207226 +0200 @@ -1,0 +2,9 @@ +Wed Apr 11 12:36:59 UTC 2018 - opensuse-releaset...@opensuse.org + +- Update to version 20180411.820d103: + * issue-diff: utilize entity_mail() as adapted into osclib.core. + * devel-project: provide notify sub-command. + * osclib/util: provide mail_send(), modified from announcer.py. + * osclib/core: provide entity_email(), modified from issue-diff.py. + +------------------------------------------------------------------- Old: ---- openSUSE-release-tools-20180406.ace73fe.obscpio New: ---- openSUSE-release-tools-20180411.820d103.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openSUSE-release-tools.spec ++++++ --- /var/tmp/diff_new_pack.LzjGEx/_old 2018-04-16 12:48:05.739062300 +0200 +++ /var/tmp/diff_new_pack.LzjGEx/_new 2018-04-16 12:48:05.739062300 +0200 @@ -20,7 +20,7 @@ %define source_dir openSUSE-release-tools %define announcer_filename factory-package-news Name: openSUSE-release-tools -Version: 20180406.ace73fe +Version: 20180411.820d103 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.LzjGEx/_old 2018-04-16 12:48:05.783060700 +0200 +++ /var/tmp/diff_new_pack.LzjGEx/_new 2018-04-16 12:48:05.783060700 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param> - <param name="changesrevision">ace73fecaf4995fb8714639901ece1b6d276f570</param> + <param name="changesrevision">1102e3cebcce638d3f2a241f6a9131482140619d</param> </service> </servicedata> ++++++ openSUSE-release-tools-20180406.ace73fe.obscpio -> openSUSE-release-tools-20180411.820d103.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20180406.ace73fe/devel-project.py new/openSUSE-release-tools-20180411.820d103/devel-project.py --- old/openSUSE-release-tools-20180406.ace73fe/devel-project.py 2018-04-06 15:28:16.000000000 +0200 +++ new/openSUSE-release-tools-20180411.820d103/devel-project.py 2018-04-11 14:30:51.000000000 +0200 @@ -12,12 +12,16 @@ from osc.core import get_review_list from osc.core import http_GET from osc.core import makeurl +from osc.core import meta_get_packagelist from osc.core import show_package_meta from osc.core import show_project_meta from osclib.comments import CommentAPI from osclib.conf import Config +from osclib.core import devel_project_fallback +from osclib.core import entity_email from osclib.core import request_age from osclib.stagingapi import StagingAPI +from osclib.util import mail_send BOT_NAME = 'devel-project' @@ -96,6 +100,32 @@ if len(intersection) != len(desired): print('{} missing {}'.format(devel_project, ', '.join(desired - intersection))) +def notify(args): + apiurl = osc.conf.config['apiurl'] + + # devel_projects_get() only works for Factory as such + # devel_project_fallback() must be used on a per package basis. + packages = meta_get_packagelist(apiurl, args.project) + maintainer_map = {} + for package in packages: + devel_project, devel_package = devel_project_fallback(apiurl, args.project, package) + if devel_project and devel_package: + devel_package_identifier = '/'.join([devel_project, devel_package]) + userids = maintainers_get(apiurl, devel_project, devel_package) + for userid in userids: + maintainer_map.setdefault(userid, set()) + maintainer_map[userid].add(devel_package_identifier) + + Config(args.project) # Ensure mail-* options are loaded for mail_send(). + subject = 'Packages you maintain are present in {}'.format(args.project) + for userid, package_identifiers in maintainer_map.items(): + email = entity_email(apiurl, userid) + message = 'The following packages you maintain are in {}:\n\n- {}'.format( + args.project, '\n- '.join(sorted(package_identifiers))) + + mail_send(args.project, email, subject, message, dry=args.dry) + print('notified {} of {} packages'.format(userid, len(package_identifiers))) + def requests(args): apiurl = osc.conf.config['apiurl'] devel_projects = devel_projects_load(args) @@ -227,6 +257,10 @@ parser_maintainer.set_defaults(func=maintainer) parser_maintainer.add_argument('-g', '--group', action='append', help='group for which to check') + parser_notify = subparsers.add_parser('notify', help='notify maintainers of their packages') + parser_notify.set_defaults(func=notify) + parser_notify.add_argument('--dry', action='store_true', help='dry run emails') + parser_requests = subparsers.add_parser('requests', help='List open requests.') parser_requests.set_defaults(func=requests) common_args_add(parser_requests) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20180406.ace73fe/issue-diff.py new/openSUSE-release-tools-20180411.820d103/issue-diff.py --- old/openSUSE-release-tools-20180406.ace73fe/issue-diff.py 2018-04-06 15:28:16.000000000 +0200 +++ new/openSUSE-release-tools-20180411.820d103/issue-diff.py 2018-04-11 14:30:51.000000000 +0200 @@ -21,6 +21,7 @@ import osc.core from osclib.cache import Cache +from osclib.core import entity_email from osclib.core import package_list from osclib.git import CACHE_DIR from osclib.git import sync @@ -54,12 +55,6 @@ return newbug.id -def entity_email(apiurl, entity, key): - url = osc.core.makeurl(apiurl, (entity, key)) - root = ET.parse(osc.core.http_GET(url)).getroot() - email = root.find('email') - return email.text if email is not None else None - def bug_owner(apiurl, package, entity='person'): query = { 'binary': package, @@ -69,10 +64,10 @@ bugowner = root.find('.//{}[@role="bugowner"]'.format(entity)) if bugowner is not None: - return entity_email(apiurl, entity, bugowner.get('name')) + return entity_email(apiurl, bugowner.get('name'), entity) maintainer = root.find('.//{}[@role="maintainer"]'.format(entity)) if maintainer is not None: - return entity_email(apiurl, entity, maintainer.get('name')) + return entity_email(apiurl, maintainer.get('name'), entity) if entity == 'person': return bug_owner(apiurl, package, 'group') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20180406.ace73fe/osclib/conf.py new/openSUSE-release-tools-20180411.820d103/osclib/conf.py --- old/openSUSE-release-tools-20180406.ace73fe/osclib/conf.py 2018-04-06 15:28:16.000000000 +0200 +++ new/openSUSE-release-tools-20180411.820d103/osclib/conf.py 2018-04-11 14:30:51.000000000 +0200 @@ -54,6 +54,10 @@ 'legal-review-group': 'legal-auto', 'repo-checker': 'repo-checker', 'pkglistgen-product-family-include': 'openSUSE:Leap:N', + 'mail-list': 'opensuse-fact...@opensuse.org', + 'mail-maintainer': 'Dominique Leuenberger <dims...@suse.de>', + 'mail-noreply': 'nore...@opensuse.org', + 'mail-release-list': 'opensuse-releaset...@opensuse.org', }, r'openSUSE:(?P<project>Leap:(?P<version>[\d.]+))': { 'staging': 'openSUSE:%(project)s:Staging', @@ -94,6 +98,10 @@ 'pkglistgen-include-suggested': '1', 'pkglistgen-delete-kiwis-rings': 'openSUSE-ftp-ftp-x86_64.kiwi openSUSE-cd-mini-x86_64.kiwi', 'pkglistgen-delete-kiwis-staging': 'openSUSE-ftp-ftp-x86_64.kiwi openSUSE-cd-mini-x86_64.kiwi', + 'mail-list': 'opensuse-fact...@opensuse.org', + 'mail-maintainer': 'Ludwig Nussel <ludwig.nus...@suse.de>', + 'mail-noreply': 'nore...@opensuse.org', + 'mail-release-list': 'opensuse-releaset...@opensuse.org', }, r'SUSE:(?P<project>SLE-15.*$)': { 'staging': 'SUSE:%(project)s:Staging', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20180406.ace73fe/osclib/core.py new/openSUSE-release-tools-20180411.820d103/osclib/core.py --- old/openSUSE-release-tools-20180406.ace73fe/osclib/core.py 2018-04-06 15:28:16.000000000 +0200 +++ new/openSUSE-release-tools-20180411.820d103/osclib/core.py 2018-04-11 14:30:51.000000000 +0200 @@ -207,3 +207,18 @@ ['build', project, repo, arch, package, filename], {'view': 'fileinfo_ext'}) return ET.parse(http_GET(url)).getroot() + +def entity_email(apiurl, key, entity_type='person', include_name=False): + url = makeurl(apiurl, [entity_type, key]) + root = ET.parse(http_GET(url)).getroot() + + email = root.find('email') + if email is None: + return None + email = email.text + + realname = root.find('realname') + if include_name and realname is not None: + email = '{} <{}>'.format(realname.text, email) + + return email diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20180406.ace73fe/osclib/util.py new/openSUSE-release-tools-20180411.820d103/osclib/util.py --- old/openSUSE-release-tools-20180406.ace73fe/osclib/util.py 2018-04-06 15:28:16.000000000 +0200 +++ new/openSUSE-release-tools-20180411.820d103/osclib/util.py 2018-04-11 14:30:51.000000000 +0200 @@ -1,3 +1,4 @@ +from osc import conf from osclib.core import project_list_prefix @@ -79,3 +80,27 @@ return version return None + +def mail_send(project, to, subject, body, from_key='maintainer', followup_to_key='release-list', dry=False): + from email.mime.text import MIMEText + import email.utils + import smtplib + + config = conf.config[project] + msg = MIMEText(body) + msg['Message-ID'] = email.utils.make_msgid() + msg['Date'] = email.utils.formatdate(localtime=1) + msg['From'] = config['mail-{}'.format(from_key)] + msg['To'] = to + followup_to = config.get('mail-{}'.format(followup_to_key)) + if followup_to: + msg['Mail-Followup-To'] = followup_to + msg['Subject'] = subject + + if dry: + print(msg.as_string()) + return + + s = smtplib.SMTP(config.get('mail-relay', 'relay.suse.de')) + s.sendmail(msg['From'], [msg['To']], msg.as_string()) + s.quit() ++++++ openSUSE-release-tools.obsinfo ++++++ --- /var/tmp/diff_new_pack.LzjGEx/_old 2018-04-16 12:48:06.479035381 +0200 +++ /var/tmp/diff_new_pack.LzjGEx/_new 2018-04-16 12:48:06.479035381 +0200 @@ -1,5 +1,5 @@ name: openSUSE-release-tools -version: 20180406.ace73fe -mtime: 1523021296 -commit: ace73fecaf4995fb8714639901ece1b6d276f570 +version: 20180411.820d103 +mtime: 1523449851 +commit: 820d1030e54f5c9bbfe9aeb69ca5b3b44a838aaa