commit openSUSE-release-tools for openSUSE:Factory

Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openSUSE-release-tools for openSUSE:Factory checked in at 2022-03-31 17:18:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old) and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1900 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "openSUSE-release-tools" Thu Mar 31 17:18:36 2022 rev:415 rq:966127 version:20220330.1114fbdd Changes: -------- --- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2022-03-30 20:36:04.949323780 +0200 +++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1900/openSUSE-release-tools.changes 2022-03-31 17:19:08.060970467 +0200 @@ -1,0 +2,26 @@ +Wed Mar 30 14:22:36 UTC 2022 - opensuse-releaseteam@opensuse.org + +- Update to version 20220330.1114fbdd: + * Add new aggregation periods to Grafana dashboard + +------------------------------------------------------------------- +Wed Mar 30 09:29:04 UTC 2022 - opensuse-releaseteam@opensuse.org + +- Update to version 20220330.68fa08aa: + * Remove obsolete Leap 15.2 announcer config + * Remove obsolete Leap 15.2 scheduling + +------------------------------------------------------------------- +Wed Mar 30 09:16:56 UTC 2022 - opensuse-releaseteam@opensuse.org + +- Update to version 20220330.a2fa6583: + * dist: no longer package check_source_in_factory + * Fix adi projects having no archs + +------------------------------------------------------------------- +Wed Mar 30 07:57:37 UTC 2022 - opensuse-releaseteam@opensuse.org + +- Update to version 20220330.adef152c: + * Merge check_source_in_factory into check_tags_in_requests.py + +------------------------------------------------------------------- Old: ---- openSUSE-release-tools-20220330.39d635d6.obscpio New: ---- openSUSE-release-tools-20220330.1114fbdd.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openSUSE-release-tools.spec ++++++ --- /var/tmp/diff_new_pack.ZVbvKR/_old 2022-03-31 17:19:09.524953953 +0200 +++ /var/tmp/diff_new_pack.ZVbvKR/_new 2022-03-31 17:19:09.532953863 +0200 @@ -20,7 +20,7 @@ %define source_dir openSUSE-release-tools %define announcer_filename factory-package-news Name: openSUSE-release-tools -Version: 20220330.39d635d6 +Version: 20220330.1114fbdd Release: 0 Summary: Tools to aid in staging and release work for openSUSE/SUSE License: GPL-2.0-or-later AND MIT @@ -356,7 +356,6 @@ %{_bindir}/osrt-build-fail-reminder %{_bindir}/osrt-checknewer %{_bindir}/osrt-check_bugowner -%{_bindir}/osrt-check_source_in_factory %{_bindir}/osrt-check_tags_in_requests %{_bindir}/osrt-compare_pkglist %{_bindir}/osrt-container_cleaner ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.ZVbvKR/_old 2022-03-31 17:19:09.572953412 +0200 +++ /var/tmp/diff_new_pack.ZVbvKR/_new 2022-03-31 17:19:09.576953367 +0200 @@ -1,7 +1,7 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param> - <param name="changesrevision">c4af75db585d384f660153b1c1f3867bc92fcda1</param> + <param name="changesrevision">1114fbdd30d0d4506ca3767d2e5d563bf076304f</param> </service> </servicedata> ++++++ openSUSE-release-tools-20220330.39d635d6.obscpio -> openSUSE-release-tools-20220330.1114fbdd.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/CONTENTS.md new/openSUSE-release-tools-20220330.1114fbdd/CONTENTS.md --- old/openSUSE-release-tools-20220330.39d635d6/CONTENTS.md 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/CONTENTS.md 2022-03-30 16:20:50.000000000 +0200 @@ -224,17 +224,6 @@ * Package: openSUSE-release-tools-abichecker * Usage: gocd? -#### check_source_in_factory - -Checks if the sources of a submission are either in Factory or a request for Factory with the same -sources exist. Not used as a standalone bot anymore, but called internally from -check_tags_in_requests. - -* Sources: [check_source_in_factory.py](check_source_in_factory.py) -* Documentation: [docs/factory-source.asciidoc](docs/factory-source.asciidoc) -* Package: openSUSE-release-tools -* Usage: used from other bots (check_tags_in_requests) - #### openqa-maintenance OpenQA stuff, not sure about the details. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/check_maintenance_incidents.py new/openSUSE-release-tools-20220330.1114fbdd/check_maintenance_incidents.py --- old/openSUSE-release-tools-20220330.39d635d6/check_maintenance_incidents.py 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/check_maintenance_incidents.py 2022-03-30 16:20:50.000000000 +0200 @@ -113,11 +113,6 @@ self._check_maintainer_review_needed(req, a) - if a.tgt_releaseproject.startswith("openSUSE:Backports:") \ - and not a.tgt_releaseproject.startswith("openSUSE:Backports:SLE-15-SP3") \ - and not a.tgt_releaseproject.startswith("openSUSE:Backports:SLE-15-SP4"): - self.add_factory_source = True - return True def check_action_submit(self, req, a): @@ -132,23 +127,10 @@ return True def check_one_request(self, req): - self.add_factory_source = False self.needs_maintainer_review = set() ret = ReviewBot.ReviewBot.check_one_request(self, req) - # check if factory-source is already a reviewer - if self.add_factory_source: - for r in req.reviews: - if r.by_user == 'factory-source': - self.add_factory_source = False - self.logger.debug("factory-source already is a reviewer") - break - - if self.add_factory_source: - self.logger.debug("%s needs review by factory-source" % req.reqid) - self.add_review(req, by_user='factory-source') - if self.needs_maintainer_review: for p in self.needs_maintainer_review: self.add_devel_project_review(req, p) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/check_source_in_factory.py new/openSUSE-release-tools-20220330.1114fbdd/check_source_in_factory.py --- old/openSUSE-release-tools-20220330.39d635d6/check_source_in_factory.py 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/check_source_in_factory.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,170 +0,0 @@ -#!/usr/bin/python3 - -import sys -import osc.conf -import osc.core -from urllib.error import HTTPError, URLError -import ReviewBot - - -class FactorySourceChecker(ReviewBot.ReviewBot): - """ This review bot is obsolete since the introduction of better - alternatives like origin-manager. But it's kept because other bots like - TagChecker (check_tags_in_request) still call this bot as part of their - implementation. - - This review bot was used in the past to check if the sources of a submission - are either in Factory or a request for Factory with the same sources exist. - If the latter a request is only accepted if the Factory request is reviewed - positive.""" - - def __init__(self, *args, **kwargs): - ReviewBot.ReviewBot.__init__(self, *args, **kwargs) - self.factory = ["openSUSE:Factory"] - self.review_messages = {'accepted': 'ok', 'declined': 'the package needs to be accepted in Factory first'} - self.history_limit = 5 - - def check_source_submission(self, src_project, src_package, src_rev, target_project, target_package): - super(FactorySourceChecker, self).check_source_submission( - src_project, src_package, src_rev, target_project, target_package) - src_srcinfo = self.get_sourceinfo(src_project, src_package, src_rev) - if src_srcinfo is None: - # source package does not exist? - # handle here to avoid crashing on the next line - self.logger.info("Could not get source info for %s/%s@%s" % (src_project, src_package, src_rev)) - return False - projects = self._package_get_upstream_projects(target_package) - if projects is None: - self.logger.error("no upstream project found for {}, can't check".format(target_package)) - return False - - self.review_messages['declined'] = 'the package needs to be accepted in {} first'.format(' or '.join(projects)) - for project in projects: - self.logger.info("Checking in project %s" % project) - good = self._check_matching_srcmd5(project, target_package, src_srcinfo.verifymd5, self.history_limit) - if good: - self.logger.info("{} is in {}".format(target_package, project)) - return good - - good = self._check_requests(project, target_package, src_srcinfo.verifymd5) - if good: - self.logger.info("{} already reviewed for {}".format(target_package, project)) - - if not good: - self.logger.info('{} failed source submission check'.format(target_package)) - - return good - - def _package_get_upstream_projects(self, package): - """ return list of projects where the specified package is supposed to come - from. Either by lookup table or self.factory """ - projects = [] - for prj in self.factory: - r = self.lookup.get(prj, package) - if r: - projects.append(r) - - if not projects: - projects = self.factory - - return projects - - def _check_requests(self, project, package, rev): - self.logger.debug("checking requests") - prjprefix = '' - apiurl = self.apiurl - sr = 'sr' - try: - if self.config.project_namespace_api_map: - for prefix, url, srprefix in self.config.project_namespace_api_map: - if project.startswith(prefix): - apiurl = url - prjprefix = prefix - project = project[len(prefix):] - sr = srprefix - break - requests = osc.core.get_request_list(apiurl, project, package, None, ['new', 'review'], 'submit') - except (HTTPError, URLError): - self.logger.error("caught exception while checking %s/%s", project, package) - return None - - def srref(reqid): - return '#'.join((sr, reqid)) - - for req in requests: - for a in req.actions: - si = self.get_sourceinfo(prjprefix + a.src_project, a.src_package, a.src_rev) - self.logger.debug("rq %s: %s/%s@%s" % (req.reqid, prjprefix + - a.src_project, a.src_package, si.verifymd5)) - if si.verifymd5 == rev: - if req.state.name == 'new': - self.logger.info("%s ok", srref(req.reqid)) - return True - elif req.state.name == 'review': - self.logger.debug("%s still in review", srref(req.reqid)) - if not req.reviews: - self.logger.error("%s in state review but no reviews?", srref(req.reqid)) - return False - for r in req.reviews: - if r.state == 'new': - if r.by_project and r.by_project.startswith('openSUSE:Factory:Staging:'): - self.logger.info("%s review by %s ok", srref(req.reqid), r.by_project) - continue - - if r.by_user == 'repo-checker': - self.logger.info('%s review by %s ok', srref(req.reqid), r.by_user) - continue - - if r.state != 'accepted': - if r.by_user: - self.logger.info("%s waiting for review by %s", srref(req.reqid), r.by_user) - elif r.by_group: - self.logger.info("%s waiting for review by %s", srref(req.reqid), r.by_group) - elif r.by_project: - if r.by_package: - self.logger.info("%s waiting for review by %s/%s", - srref(req.reqid), r.by_project, r.by_package) - else: - self.logger.info("%s waiting for review by %s", srref(req.reqid), r.by_project) - return None - return True - else: - self.logger.error("%s in state %s not expected", srref(req.reqid), req.state.name) - return None - else: - self.logger.info("%s to %s has different sources", srref(req.reqid), project) - return False - - -class CommandLineInterface(ReviewBot.CommandLineInterface): - - def __init__(self, *args, **kwargs): - ReviewBot.CommandLineInterface.__init__(self, args, kwargs) - self.clazz = FactorySourceChecker - - def get_optparser(self): - parser = ReviewBot.CommandLineInterface.get_optparser(self) - parser.add_option("--factory", metavar="project", action="append", - help=("Project to check source against. Use multiple times to check more than one project. " - "[default: openSUSE:Factory]")) - parser.add_option("--lookup", metavar="project", help="use lookup file") - parser.add_option("--limit", metavar="limit", help="how many revisions back to check. [default: 5]") - - return parser - - def setup_checker(self): - bot = ReviewBot.CommandLineInterface.setup_checker(self) - - if self.options.factory: - bot.factory = self.options.factory - if self.options.lookup: - bot.parse_lookup(self.options.lookup) - if self.options.limit: - bot.history_limit = self.options.limit - - return bot - - -if __name__ == "__main__": - app = CommandLineInterface() - sys.exit(app.main()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/check_tags_in_requests.py new/openSUSE-release-tools-20220330.1114fbdd/check_tags_in_requests.py --- old/openSUSE-release-tools-20220330.39d635d6/check_tags_in_requests.py 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/check_tags_in_requests.py 2022-03-30 16:20:50.000000000 +0200 @@ -9,7 +9,137 @@ import ReviewBot -import check_source_in_factory + +class FactorySourceChecker(ReviewBot.ReviewBot): + """ This review bot is obsolete since the introduction of better + alternatives like origin-manager. But it's kept because other bots like + TagChecker (check_tags_in_request) still call this bot as part of their + implementation. + + This review bot was used in the past to check if the sources of a submission + are either in Factory or a request for Factory with the same sources exist. + If the latter a request is only accepted if the Factory request is reviewed + positive.""" + + def __init__(self, *args, **kwargs): + ReviewBot.ReviewBot.__init__(self, *args, **kwargs) + self.factory = ["openSUSE:Factory"] + self.review_messages = {'accepted': 'ok', 'declined': 'the package needs to be accepted in Factory first'} + self.history_limit = 5 + + def check_source_submission(self, src_project, src_package, src_rev, target_project, target_package): + super(FactorySourceChecker, self).check_source_submission( + src_project, src_package, src_rev, target_project, target_package) + src_srcinfo = self.get_sourceinfo(src_project, src_package, src_rev) + if src_srcinfo is None: + # source package does not exist? + # handle here to avoid crashing on the next line + self.logger.info("Could not get source info for %s/%s@%s" % (src_project, src_package, src_rev)) + return False + projects = self._package_get_upstream_projects(target_package) + if projects is None: + self.logger.error("no upstream project found for {}, can't check".format(target_package)) + return False + + self.review_messages['declined'] = 'the package needs to be accepted in {} first'.format(' or '.join(projects)) + for project in projects: + self.logger.info("Checking in project %s" % project) + good = self._check_matching_srcmd5(project, target_package, src_srcinfo.verifymd5, self.history_limit) + if good: + self.logger.info("{} is in {}".format(target_package, project)) + return good + + good = self._check_requests(project, target_package, src_srcinfo.verifymd5) + if good: + self.logger.info("{} already reviewed for {}".format(target_package, project)) + + if not good: + self.logger.info('{} failed source submission check'.format(target_package)) + + return good + + def _check_requests(self, project, package, rev): + self.logger.debug("checking requests") + prjprefix = '' + apiurl = self.apiurl + sr = 'sr' + try: + if self.config.project_namespace_api_map: + for prefix, url, srprefix in self.config.project_namespace_api_map: + if project.startswith(prefix): + apiurl = url + prjprefix = prefix + project = project[len(prefix):] + sr = srprefix + break + requests = osc.core.get_request_list(apiurl, project, package, None, ['new', 'review'], 'submit') + except (HTTPError, URLError): + self.logger.error("caught exception while checking %s/%s", project, package) + return None + + def srref(reqid): + return '#'.join((sr, reqid)) + + for req in requests: + for a in req.actions: + si = self.get_sourceinfo(prjprefix + a.src_project, a.src_package, a.src_rev) + self.logger.debug("rq %s: %s/%s@%s" % (req.reqid, prjprefix + + a.src_project, a.src_package, si.verifymd5)) + if si.verifymd5 != rev: + self.logger.info("%s to %s has different sources", srref(req.reqid), project) + continue + + if req.state.name == 'new': + self.logger.info("%s ok", srref(req.reqid)) + return True + if req.state.name != 'review': + self.logger.error("%s in state %s not expected", srref(req.reqid), req.state.name) + return None + + self.logger.debug("%s still in review", srref(req.reqid)) + if not req.reviews: + self.logger.error("%s in state review but no reviews?", srref(req.reqid)) + return False + for r in req.reviews: + if r.state == 'new': + if r.by_project and r.by_project.startswith('openSUSE:Factory:Staging:'): + self.logger.info("%s review by %s ok", srref(req.reqid), r.by_project) + continue + + if r.by_user == 'repo-checker': + self.logger.info('%s review by %s ok', srref(req.reqid), r.by_user) + continue + + if r.state == 'accepted': + continue + if r.by_user: + self.logger.info("%s waiting for review by %s", srref(req.reqid), r.by_user) + elif r.by_group: + self.logger.info("%s waiting for review by %s", srref(req.reqid), r.by_group) + elif r.by_project: + if r.by_package: + self.logger.info("%s waiting for review by %s/%s", + srref(req.reqid), r.by_project, r.by_package) + else: + self.logger.info("%s waiting for review by %s", srref(req.reqid), r.by_project) + return None + return True + + return False + + def _package_get_upstream_projects(self, package): + """ return list of projects where the specified package is supposed to come + from. Either by lookup table or self.factory """ + projects = [] + for prj in self.factory: + r = self.lookup.get(prj, package) + if r: + projects.append(r) + + if not projects: + projects = self.factory + + return projects class TagChecker(ReviewBot.ReviewBot): @@ -82,11 +212,11 @@ # already in Factory with the same revision, # and the package is being introduced, not updated # 2) A new package must have an issue tag - factory_checker = check_source_in_factory.FactorySourceChecker(apiurl=self.apiurl, - dryrun=self.dryrun, - logger=self.logger, - user=self.review_user, - group=self.review_group) + factory_checker = FactorySourceChecker(apiurl=self.apiurl, + dryrun=self.dryrun, + logger=self.logger, + user=self.review_user, + group=self.review_group) factory_checker.factory = self.factory factory_ok = factory_checker.check_source_submission(a.src_project, a.src_package, a.src_rev, a.tgt_project, a.tgt_package) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/config/announcer/openSUSE:Leap:15.2.yml new/openSUSE-release-tools-20220330.1114fbdd/config/announcer/openSUSE:Leap:15.2.yml --- old/openSUSE-release-tools-20220330.39d635d6/config/announcer/openSUSE:Leap:15.2.yml 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/config/announcer/openSUSE:Leap:15.2.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,33 +0,0 @@ -bodytemplate: ' - - Please note that this mail was generated by a script. - - The described changes are computed based on the x86_64 DVD. - - The full online repo contains too many changes to be listed here. - - - Please check the known defects of this snapshot before upgrading: - - https://openqa.opensuse.org/tests/overview?distri=opensuse&version=15.2&build={version}&groupid=50 - - https://bugzilla.opensuse.org/buglist.cgi?product=openSUSE%20Distribution&qu... - - - When you reply to discuss some issues, make sure to change the subject. - - Please use the test plan at - - https://docs.google.com/spreadsheets/d/1AGKijKpKiJCB616-bHVoNQuhWHpQLHPWCb3m... - - to record your testing efforts and use bugzilla to report bugs. - - - {text} - - ' -iso: openSUSE-Leap-15.2-DVD-x86_64-Current.iso -name: openSUSE:Leap:15.2 -subject: Leap 15.2 Build {version} released! -url: http://download.opensuse.org/distribution/leap/15.2/iso/ -sender: openSUSE release team <opensuse-releaseteam@opensuse.org> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/data/apimap.json new/openSUSE-release-tools-20220330.1114fbdd/data/apimap.json --- old/openSUSE-release-tools-20220330.39d635d6/data/apimap.json 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/data/apimap.json 2022-03-30 16:20:50.000000000 +0200 @@ -1,9 +1,4 @@ { - "openSUSE:Leap:15.2:Update" : { - "version": "15.2", - "flavor": "DVD-Incidents", - "distri": "opensuse" - }, "openSUSE:Leap:15.3:Update" : { "version": "15.3", "flavor": "DVD-Incidents", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/data/incidents.json new/openSUSE-release-tools-20220330.1114fbdd/data/incidents.json --- old/openSUSE-release-tools-20220330.39d635d6/data/incidents.json 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/data/incidents.json 2022-03-30 16:20:50.000000000 +0200 @@ -1,10 +1,4 @@ { - "openSUSE:Leap:15.2:Update": { - "DISTRI": "opensuse", - "FLAVOR": "DVD-Incidents", - "VERSION": "15.2", - "ARCH": "x86_64" - }, "openSUSE:Leap:15.3:Update": { "DISTRI": "opensuse", "FLAVOR": "DVD-Incidents", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/data/repos.json new/openSUSE-release-tools-20220330.1114fbdd/data/repos.json --- old/openSUSE-release-tools-20220330.39d635d6/data/repos.json 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/data/repos.json 2022-03-30 16:20:50.000000000 +0200 @@ -1,19 +1,5 @@ { "https://openqa.opensuse.org" : { - "openSUSE:Leap:15.2:Update" : { - "settings" : { - "OS_TEST_ISSUES" : "", - "FLAVOR" : "DVD-Updates", - "DISTRI" : "opensuse", - "VERSION" : "15.2", - "ARCH" : "x86_64" - }, - "test" : "kde", - "repos" : [ - "http://download.opensuse.org/update/leap/15.2/oss/", - "http://download.opensuse.org/update/leap/15.2/non-oss/" - ] - }, "openSUSE:Leap:15.3:Update" : { "settings" : { "OS_TEST_ISSUES" : "", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/dist/package/openSUSE-release-tools.spec new/openSUSE-release-tools-20220330.1114fbdd/dist/package/openSUSE-release-tools.spec --- old/openSUSE-release-tools-20220330.39d635d6/dist/package/openSUSE-release-tools.spec 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/dist/package/openSUSE-release-tools.spec 2022-03-30 16:20:50.000000000 +0200 @@ -356,7 +356,6 @@ %{_bindir}/osrt-build-fail-reminder %{_bindir}/osrt-checknewer %{_bindir}/osrt-check_bugowner -%{_bindir}/osrt-check_source_in_factory %{_bindir}/osrt-check_tags_in_requests %{_bindir}/osrt-compare_pkglist %{_bindir}/osrt-container_cleaner diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/docs/factory-source.asciidoc new/openSUSE-release-tools-20220330.1114fbdd/docs/factory-source.asciidoc --- old/openSUSE-release-tools-20220330.39d635d6/docs/factory-source.asciidoc 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/docs/factory-source.asciidoc 1970-01-01 01:00:00.000000000 +0100 @@ -1,42 +0,0 @@ -Factory Source Check -==================== -:author: Ludwig Nussel <ludwig.nussel@suse.de> -:toc: - - -Introduction ------------- -[id="intro"] - -A review bot that checks if the sources of a submission are either in Factory -or a request for Factory with the same sources exist. If the latter a request -is only accepted if the Factory request is reviewed positive. - -It's based on the generic ReviewBot.py - -Installation ------------- -[id="install"] - -No installation. The bot can run directly from git. - -Command line ------------- -[id="cli"] - -Check all requests that have "factory-source" as reviewer: - -------------------------------------------------------------------------------- -./check_source_in_factory.py review -------------------------------------------------------------------------------- - -Checks done ------------ -[id="checks"] - - -This bot accepts review requests if sources for a request are accepted in -factory. Either at top, in the history or due to a submit request with the same -sources in state new. If not the request is rejected unless a submission with -the same sources in state review exists. In that case the bot doesn't touch the -request. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/docs/maintbot.asciidoc new/openSUSE-release-tools-20220330.1114fbdd/docs/maintbot.asciidoc --- old/openSUSE-release-tools-20220330.39d635d6/docs/maintbot.asciidoc 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/docs/maintbot.asciidoc 2022-03-30 16:20:50.000000000 +0200 @@ -36,5 +36,3 @@ This bot accepts review requests if the author of the request is a known maintainer of the package in Factory. If not the devel project/package is set as reviewer. -Furthermore the bot checks if the submission is for the Backports project. In that -case it adds factory-source as reviewer. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/metrics/grafana/access.json new/openSUSE-release-tools-20220330.1114fbdd/metrics/grafana/access.json --- old/openSUSE-release-tools-20220330.39d635d6/metrics/grafana/access.json 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/metrics/grafana/access.json 2022-03-30 16:20:50.000000000 +0200 @@ -2415,9 +2415,19 @@ "selected": true, "text": "month", "value": "month" + }, + { + "selected": false, + "text": "FQ", + "value": "FQ" + }, + { + "selected": false, + "text": "FY", + "value": "FY" } ], - "query": "day, week, month", + "query": "day, week, month, FQ, FY", "type": "custom" }, { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/osclib/stagingapi.py new/openSUSE-release-tools-20220330.1114fbdd/osclib/stagingapi.py --- old/openSUSE-release-tools-20220330.39d635d6/osclib/stagingapi.py 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/osclib/stagingapi.py 2022-03-30 16:20:50.000000000 +0200 @@ -1441,6 +1441,7 @@ for arch in self.cstaging_archs: a = ET.SubElement(repository, 'arch') a.text = arch + meta = ET.tostring(root) url = make_meta_url('prj', name, self.apiurl) http_PUT(url, data=meta) # put twice because on first put, the API adds useless maintainer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/tests/factory_source_tests.py new/openSUSE-release-tools-20220330.1114fbdd/tests/factory_source_tests.py --- old/openSUSE-release-tools-20220330.39d635d6/tests/factory_source_tests.py 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/tests/factory_source_tests.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,300 +0,0 @@ -import os -import unittest -import logging -import httpretty -from osclib.cache import Cache -from . import OBSLocal - -from urllib.parse import urlparse, parse_qs -from check_source_in_factory import FactorySourceChecker - -APIURL = 'http://testhost.example.com' -FIXTURES = os.path.join(os.getcwd(), 'tests/fixtures') - - -class TestFactorySourceAccept(OBSLocal.TestCase): - - def tearDown(self): - httpretty.disable() - httpretty.reset() - - def setUp(self): - """ - Initialize the configuration - """ - super().setUp() - - Cache.last_updated[APIURL] = {'__oldest': '2016-12-18T11:49:37Z'} - httpretty.reset() - httpretty.enable(allow_net_connect=False) - - logging.basicConfig() - self.logger = logging.getLogger(__file__) - self.logger.setLevel(logging.DEBUG) - - 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): - - httpretty.register_uri(httpretty.GET, - APIURL + '/source/openSUSE:Factory/00Meta/lookup.yml', - status=404) - - httpretty.register_uri(httpretty.GET, - APIURL + "/request/770001", - body=""" - <request id="770001" creator="chameleon"> - <action type="submit"> - <source project="Base:System" package="timezone" rev="481ecbe0dfc63ece3a1f1b5598f7d96c"/> - <target project="openSUSE:13.2" package="timezone"/> - </action> - <state name="new" who="factory-source" when="2014-10-08T12:06:07"> - <comment>...</comment> - </state> - <review state="new" by_user="factory-source"/> - <description>...</description> - </request> - """) - - httpretty.register_uri(httpretty.GET, - APIURL + "/source/Base:System/timezone?view=info&rev=481ecbe0dfc63ece3a1f1b5598f7d96c", - match_querystring=True, - body=""" - <sourceinfo package="timezone" - rev="481ecbe0dfc63ece3a1f1b5598f7d96c" - srcmd5="481ecbe0dfc63ece3a1f1b5598f7d96c" - verifymd5="67bac34d29d70553239d33aaf92d2fdd"> - <filename>timezone.spec</filename> - </sourceinfo> - """) - - httpretty.register_uri(httpretty.GET, - APIURL + "/source/openSUSE:Factory/timezone/_meta", - body=""" - <package name="timezone" project="openSUSE:Factory"> - <title>timezone</title> - <description></description> - </package> - """) - - httpretty.register_uri(httpretty.GET, - APIURL + "/source/Base:System/timezone/_meta", - body=""" - <package name="timezone" project="Base:System"> - <title>timezone</title> - <description></description> - </package> - """) - - httpretty.register_uri(httpretty.GET, - APIURL + "/source/openSUSE:Factory/timezone?view=info", - match_querystring=True, - body=""" - <sourceinfo package="timezone" - rev="89" - vrev="1" - srcmd5="a36605617cbeefa8168bf0ccf3058074" - verifymd5="a36605617cbeefa8168bf0ccf3058074"> - <filename>timezone.spec</filename> - </sourceinfo> - """) - - httpretty.register_uri(httpretty.GET, - APIURL + "/source/openSUSE:Factory/timezone/_history?limit=5", - match_querystring=True, - body=""" - <sourceinfo package="timezone" - rev="89" - vrev="1" - srcmd5="a36605617cbeefa8168bf0ccf3058074" - verifymd5="a36605617cbeefa8168bf0ccf3058074"> - <filename>timezone.spec</filename> - </sourceinfo> - """) - - httpretty.register_uri(httpretty.GET, - APIURL + '/search/request', - responses=[ - httpretty.Response(body=""" - <collection matches="1"> - <request id="254684" creator="chameleon"> - <action type="submit"> - <source project="Base:System" package="timezone" rev="481ecbe0dfc63ece3a1f1b5598f7d96c"/> - <target project="openSUSE:Factory" package="timezone"/> - </action> - <state name="review" who="factory-auto" when="2014-10-08T11:55:56"> - <comment>...</comment> - </state> - <review state="new" by_group="opensuse-review-team"> - <comment/> - </review> - <description> ... </description> - </request> - </collection> - """), - httpretty.Response(body=""" - <collection matches="1"> - <request id="254684" creator="chameleon"> - <action type="submit"> - <source project="Base:System" package="timezone" rev="481ecbe0dfc63ece3a1f1b5598f7d96c"/> - <target project="openSUSE:Factory" package="timezone"/> - </action> - <state name="new" who="factory-auto" when="2014-10-08T11:55:56"> - <comment>...</comment> - </state> - <description> ... </description> - </request> - </collection> - """) - ]) - - result = {'status': None} - - def change_request(result, method, uri, headers): - query = parse_qs(urlparse(uri).query) - if query == {'by_user': ['factory-source'], 'cmd': ['changereviewstate'], 'newstate': ['accepted']}: - result['status'] = True - else: - result['status'] = 'ERROR' - return (200, headers, '<status code="blah"/>') - - httpretty.register_uri(httpretty.POST, - APIURL + "/request/770001", - body=lambda method, uri, headers: change_request(result, method, uri, headers)) - - # first time request is in in review - self.checker.set_request_ids(['770001']) - self.checker.check_requests() - - self.assertEqual(result['status'], None) - - # second time request is in state new so we can accept - self.checker.set_request_ids(['770001']) - self.checker.check_requests() - - self.assertTrue(result['status']) - - def test_source_not_in_factory(self): - url = '/search/request?match=state%2F%40name%3D%27review%27+and+review%5B%40by_user%3D' - url += '%27factory-source%27+and+%40state%3D%27new%27%5D&withfullhistory=1' - httpretty.register_uri(httpretty.GET, - APIURL + url, - match_querystring=True, - body=""" - <collection matches="1"> - <request id="261411" creator="lnussel"> - <action type="maintenance_incident"> - <source project="home:lnussel:branches:openSUSE:Backports:SLE-12" package="plan" - rev="71e76daf2c2e9ddb0b9208f54a14f608"/> - <target project="openSUSE:Maintenance" releaseproject="openSUSE:Backports:SLE-12"/> - </action> - <state name="review" who="maintbot" when="2014-11-13T13:22:02"> - <comment></comment> - </state> - <review state="accepted" when="2014-11-13T13:22:02" who="maintbot" by_user="maintbot"> - <comment>accepted</comment> - <history who="maintbot" when="2014-11-13T16:43:09"> - <description>Review got accepted</description> - <comment>accepted</comment> - </history> - </review> - <review state="new" by_user="factory-source"/> - <history who="lnussel" when="2014-11-13T13:22:02"> - <description>Request created</description> - <comment>test update</comment> - </history> - <history who="maintbot" when="2014-11-13T16:43:08"> - <description>Request got a new review request</description> - </history> - <description>test update</description> - </request> - </collection> - """) - - httpretty.register_uri(httpretty.GET, - APIURL + "/request/261411", - body=""" - <request id="261411" creator="lnussel"> - <action type="maintenance_incident"> - <source project="home:lnussel:branches:openSUSE:Backports:SLE-12" package="plan" - rev="71e76daf2c2e9ddb0b9208f54a14f608"/> - <target project="openSUSE:Maintenance" releaseproject="openSUSE:Backports:SLE-12"/> - </action> - <state name="review" who="maintbot" when="2014-11-13T13:22:02"> - <comment></comment> - </state> - <review state="accepted" when="2014-11-13T13:22:02" who="maintbot" by_user="maintbot"> - <comment>accepted</comment> - <history who="maintbot" when="2014-11-13T16:43:09"> - <description>Review got accepted</description> - <comment>accepted</comment> - </history> - </review> - <review state="new" by_user="factory-source"/> - <history who="lnussel" when="2014-11-13T13:22:02"> - <description>Request created</description> - <comment>test update</comment> - </history> - <history who="maintbot" when="2014-11-13T16:43:08"> - <description>Request got a new review request</description> - </history> - <description>test update</description> - </request> - """) - - httpretty.register_uri(httpretty.GET, - APIURL + "/source/home:lnussel:branches:openSUSE:Backports:SLE-12/plan", - body=""" - <directory name="plan" rev="1" vrev="1" srcmd5="b4ed19dc30c1b328168bc62a81ec6998"> - <linkinfo project="home:lnussel:plan" package="plan" srcmd5="7a2353f73b29dba970702053229542a0" - baserev="7a2353f73b29dba970702053229542a0" xsrcmd5="71e76daf2c2e9ddb0b9208f54a14f608" - lsrcmd5="b4ed19dc30c1b328168bc62a81ec6998" /> - <entry name="_link" md5="91f81d88456818a18a7332999fb2da18" size="125" mtime="1415807350" /> - <entry name="plan.spec" md5="b6814215f6d2e8559b43de9a214b2cbd" size="8103" mtime="1413627959" /> - </directory> - """) - - httpretty.register_uri(httpretty.GET, - APIURL + "/source/openSUSE:Factory/plan/_meta", - status=404, - body=""" - <status code="unknown_package"> - <summary>openSUSE:Factory/plan</summary> - </status> - """) - - httpretty.register_uri(httpretty.GET, - APIURL + '/source/openSUSE:Factory/00Meta/lookup.yml', - status=404) - - httpretty.register_uri(httpretty.GET, - APIURL + '/search/request', - body=""" - <collection matches="0"> - </collection> - """) - - result = {'factory_source_declined': None} - - def change_request(result, method, uri, headers): - query = parse_qs(urlparse(uri).query) - if query == {'by_user': ['factory-source'], 'cmd': ['changereviewstate'], 'newstate': ['declined']}: - result['factory_source_declined'] = True - return (200, headers, '<status code="ok"/>') - - httpretty.register_uri(httpretty.POST, - APIURL + "/request/261411", - body=lambda method, uri, headers: change_request(result, method, uri, headers)) - - self.checker.requests = [] - self.checker.set_request_ids_search_review() - self.checker.check_requests() - - self.assertTrue(result['factory_source_declined']) - - -if __name__ == '__main__': - unittest.main() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220330.39d635d6/tests/maintenance_tests.py new/openSUSE-release-tools-20220330.1114fbdd/tests/maintenance_tests.py --- old/openSUSE-release-tools-20220330.39d635d6/tests/maintenance_tests.py 2022-03-30 09:07:58.000000000 +0200 +++ new/openSUSE-release-tools-20220330.1114fbdd/tests/maintenance_tests.py 2022-03-30 16:20:50.000000000 +0200 @@ -281,89 +281,6 @@ self.assertFalse(result['devel_review_added']) - def test_backports_submit(self): - - httpretty.register_uri(httpretty.GET, - APIURL + '/search/request', - body=""" - <collection matches="1"> - <request id="261411" creator="lnussel"> - <action type="maintenance_incident"> - <source project="home:lnussel:branches:openSUSE:Backports:SLE-12" - package="plan" rev="71e76daf2c2e9ddb0b9208f54a14f608"/> - <target project="openSUSE:Maintenance" releaseproject="openSUSE:Backports:SLE-12"/> - </action> - <state name="review" who="lnussel" when="2014-11-13T13:22:02"> - <comment></comment> - </state> - <review state="new" by_user="maintbot"/> - <history who="lnussel" when="2014-11-13T13:22:02"> - <description>Request created</description> - <comment>test update</comment> - </history> - <description>test update</description> - </request> - </collection> - """) - - httpretty.register_uri(httpretty.GET, - APIURL + "/request/261411", - body=""" - <request id="261411" creator="lnussel"> - <action type="maintenance_incident"> - <source project="home:lnussel:branches:openSUSE:Backports:SLE-12" - package="plan" rev="71e76daf2c2e9ddb0b9208f54a14f608"/> - <target project="openSUSE:Maintenance" releaseproject="openSUSE:Backports:SLE-12"/> - </action> - <state name="review" who="lnussel" when="2014-11-13T13:22:02"> - <comment></comment> - </state> - <review state="new" by_user="maintbot"/> - <history who="lnussel" when="2014-11-13T13:22:02"> - <description>Request created</description> - <comment>test update</comment> - </history> - <description>test update</description> - </request> - """) - - httpretty.register_uri(httpretty.GET, - APIURL + "/source/home:lnussel:branches:openSUSE:Backports:SLE-12/plan", - body=""" - <directory name="plan" rev="1" vrev="1" srcmd5="b4ed19dc30c1b328168bc62a81ec6998"> - <linkinfo project="home:lnussel:plan" package="plan" srcmd5="7a2353f73b29dba970702053229542a0" - baserev="7a2353f73b29dba970702053229542a0" xsrcmd5="71e76daf2c2e9ddb0b9208f54a14f608" - lsrcmd5="b4ed19dc30c1b328168bc62a81ec6998" /> - <entry name="_link" md5="91f81d88456818a18a7332999fb2da18" size="125" mtime="1415807350" /> - <entry name="plan.spec" md5="b6814215f6d2e8559b43de9a214b2cbd" size="8103" mtime="1413627959" /> - </directory> - - """) - - httpretty.register_uri(httpretty.GET, - APIURL + '/search/owner', - body=""" - <collection/> - """) - - result = {'factory_review_added': None} - - def change_request(result, method, uri, headers): - query = parse_qs(urlparse(uri).query) - if query == {'cmd': ['addreview'], 'by_user': ['factory-source']}: - result['factory_review_added'] = True - return (200, headers, '<status code="ok"/>') - - httpretty.register_uri(httpretty.POST, - APIURL + "/request/261411", - body=lambda method, uri, headers: change_request(result, method, uri, headers)) - - self.checker.requests = [] - self.checker.set_request_ids_search_review() - self.checker.check_requests() - - self.assertTrue(result['factory_review_added']) - if __name__ == '__main__': unittest.main() ++++++ openSUSE-release-tools.obsinfo ++++++ --- /var/tmp/diff_new_pack.ZVbvKR/_old 2022-03-31 17:19:10.152946870 +0200 +++ /var/tmp/diff_new_pack.ZVbvKR/_new 2022-03-31 17:19:10.156946825 +0200 @@ -1,5 +1,5 @@ name: openSUSE-release-tools -version: 20220330.39d635d6 -mtime: 1648624078 -commit: 39d635d6de83bbdba1a319b7b73d0de6cfac5aa3 +version: 20220330.1114fbdd +mtime: 1648650050 +commit: 1114fbdd30d0d4506ca3767d2e5d563bf076304f
participants (1)
-
Source-Sync