def _check_maintainer_review_needed(self, req, a):
        author = req.get_creator()
        if a.type == 'maintenance_incident':
            # check if there is a link and use that or the real package
            # name as src_packge may end with something like
            # .openSUSE_XX.Y_Update
            pkgname = a.src_package
            (linkprj, linkpkg) = self._get_linktarget(a.src_project, pkgname)
            if linkpkg is not None:
                pkgname = linkpkg
            if self._is_patchinfo(a.src_package):
                return None

            project = a.tgt_releaseproject
        else:
            pkgname = a.tgt_package
            project = a.tgt_project

        if project.startswith('openSUSE:Leap:') and hasattr(a, 'src_project'):
            mapping = MaintenanceChecker._get_lookup_yml(self.apiurl, project)
            if mapping is None:
                self.logger.error(
                    "error loading mapping for {}".format(project))
            elif not pkgname in mapping:
                self.logger.debug("{} not tracked".format(pkgname))
            else:
                origin = mapping[pkgname]
                self.logger.debug("{} comes from {}, submitted from {}".format(
                    pkgname, origin, a.src_project))
                if origin.startswith('SUSE:SLE-12') and a.src_project.startswith('SUSE:SLE-12') \
                    or origin.startswith('SUSE:SLE-15') and a.src_project.startswith('SUSE:SLE-15') \
                    or origin.startswith('openSUSE:Leap') and a.src_project.startswith('openSUSE:Leap'):
                    self.logger.info(
                        "{} submitted from {}, no maintainer review needed".
                        format(pkgname, a.src_project))
                    return

        maintainers = set(maintainers_get(self.apiurl, project, pkgname))
        if maintainers:
            known_maintainer = False
            for m in maintainers:
                if author == m:
                    self.logger.debug("%s is maintainer" % author)
                    known_maintainer = True
            if not known_maintainer:
                for r in req.reviews:
                    if r.by_user in maintainers:
                        self.logger.debug("found %s as reviewer" % r.by_user)
                        known_maintainer = True
            if not known_maintainer:
                self.logger.debug(
                    "author: %s, maintainers: %s => need review" %
                    (author, ','.join(maintainers)))
                self.needs_maintainer_review.add(pkgname)
        else:
            self.logger.warning("%s doesn't have maintainers" % pkgname)
            self.needs_maintainer_review.add(pkgname)
Exemplo n.º 2
0
    def devel_project_review_needed(self, request, project, package):
        author = request.get_creator()
        maintainers = set(maintainers_get(self.apiurl, project, package))

        if author in maintainers:
            return False

        # Carried over from maintbot, but seems haphazard.
        for review in request.reviews:
            if review.by_user in maintainers:
                return False

        return True
Exemplo n.º 3
0
    def devel_project_review_needed(self, request, project, package):
        author = request.get_creator()
        maintainers = set(maintainers_get(self.apiurl, project, package))

        if author in maintainers:
            return False

        # Carried over from maintbot, but seems haphazard.
        for review in request.reviews:
            if review.by_user in maintainers:
                return False

        return True
    def _check_maintainer_review_needed(self, req, a):
        author = req.get_creator()
        if a.type == 'maintenance_incident':
            # check if there is a link and use that or the real package
            # name as src_packge may end with something like
            # .openSUSE_XX.Y_Update
            pkgname = a.src_package
            (linkprj, linkpkg) = self._get_linktarget(a.src_project, pkgname)
            if linkpkg is not None:
                pkgname = linkpkg
            if self._is_patchinfo(a.src_package):
                return None

            project = a.tgt_releaseproject
        else:
            pkgname = a.tgt_package
            project = a.tgt_project

        if project.startswith('openSUSE:Leap:') and hasattr(a, 'src_project'):
            mapping = MaintenanceChecker._get_lookup_yml(self.apiurl, project)
            if mapping is None:
                self.logger.error("error loading mapping for {}".format(project))
            elif not pkgname in mapping:
                self.logger.debug("{} not tracked".format(pkgname))
            else:
                origin = mapping[pkgname]
                self.logger.debug("{} comes from {}, submitted from {}".format(pkgname, origin, a.src_project))
                if origin.startswith('SUSE:SLE-12') and a.src_project.startswith('SUSE:SLE-12') \
                    or origin.startswith('SUSE:SLE-15') and a.src_project.startswith('SUSE:SLE-15') \
                    or origin.startswith('openSUSE:Leap') and a.src_project.startswith('openSUSE:Leap'):
                    self.logger.info("{} submitted from {}, no maintainer review needed".format(pkgname, a.src_project))
                    return

        maintainers = set(maintainers_get(self.apiurl, project, pkgname))
        if maintainers:
            known_maintainer = False
            for m in maintainers:
                if author == m:
                    self.logger.debug("%s is maintainer"%author)
                    known_maintainer = True
            if not known_maintainer:
                for r in req.reviews:
                    if r.by_user in maintainers:
                        self.logger.debug("found %s as reviewer"%r.by_user)
                        known_maintainer = True
            if not known_maintainer:
                self.logger.debug("author: %s, maintainers: %s => need review"%(author, ','.join(maintainers)))
                self.needs_maintainer_review.add(pkgname)
        else:
            self.logger.warning("%s doesn't have maintainers"%pkgname)
            self.needs_maintainer_review.add(pkgname)