示例#1
0
    def virtually_accept_delete(self, request_id, package):
        self.api.add_review(
            request_id,
            by_group=self.api.cdelreq_review,
            msg='Request accepted. Cleanup in progress - DO NOT REVOKE!')

        filelist = self.api.get_filelist_for_package(pkgname=package,
                                                     project=self.api.project,
                                                     expand='1',
                                                     extension='spec')
        pkgs = self.api.extract_specfile_short(filelist)

        # Disable build and wipes the binary to the package and the sub-package
        for pkg in pkgs:
            meta = show_package_meta(self.api.apiurl, self.api.project, pkg)
            meta = ''.join(meta)
            # Update package meta to disable build
            self.api.create_package_container(self.api.project,
                                              pkg,
                                              meta=meta,
                                              disable_build=True)
            wipebinaries(self.api.apiurl,
                         self.api.project,
                         package=pkg,
                         repo=self.api.cmain_repo)

            # Remove package from Rings
            if self.api.ring_packages.get(pkg):
                delete_package(self.api.apiurl,
                               self.api.ring_packages.get(pkg),
                               pkg,
                               force=True,
                               msg="Cleanup package in Rings")
示例#2
0
    def getPackageMeta(self, project, package):
        """
        getPackageMeta(project, package) -> string

        Get XML metadata for package in project
        """
        return ''.join(core.show_package_meta(self.apiurl, project, package))
示例#3
0
    def getPackageMeta(self, project, package):
        """
        getPackageMeta(project, package) -> string

        Get XML metadata for package in project
        """
        return ''.join(core.show_package_meta(self.apiurl, project, package))
示例#4
0
    def _get_devel_project(self, project, package):
        """ get devel project for a single project"""
        if not self.item_exists(project, package):
            return None

        m = show_package_meta(self.apiurl, project, package)
        node = ET.fromstring(''.join(m)).find('devel')
        if node is None:
            return None
        else:
            return node.get('project')
示例#5
0
def devel_project_get(apiurl, target_project, target_package):
    try:
        meta = ET.fromstring(''.join(show_package_meta(apiurl, target_project, target_package)))
        node = meta.find('devel')
        if node is not None:
            return node.get('project'), node.get('package')
    except HTTPError as e:
        if e.code != 404:
            raise e

    return None, None
示例#6
0
def devel_project_get(apiurl, target_project, target_package):
    try:
        meta = ET.fromstringlist(show_package_meta(apiurl, target_project, target_package))
        node = meta.find('devel')
        if node is not None:
            return node.get('project'), node.get('package')
    except HTTPError as e:
        if e.code != 404:
            raise e

    return None, None
示例#7
0
    def _get_devel_project(self, project, package):
        """ get devel project for a single project"""
        if not self.item_exists(project, package):
            return None

        m = show_package_meta(self.apiurl, project, package)
        node = ET.fromstring(''.join(m)).find('devel')
        if node is None:
            return None
        else:
            return node.get('project')
示例#8
0
def package_role_expand(apiurl, project, package, role='maintainer', inherit=True):
    """
    All users with a certain role on a package, including those who have the role directly assigned
    and those who are part of a group with that role.
    """
    meta = ETL.fromstringlist(show_package_meta(apiurl, project, package))
    users = meta_role_expand(apiurl, meta, role)

    if inherit:
        users.extend(project_role_expand(apiurl, project, role))

    return users
    def virtually_accept_delete(self, request_id, package):
        self.api.add_review(request_id, by_group=self.api.cdelreq_review, msg='Request accepted. Cleanup in progress - DO NOT REVOKE!')

        filelist = self.api.get_filelist_for_package(pkgname=package, project=self.api.project, expand='1', extension='spec')
        pkgs = self.api.extract_specfile_short(filelist)

        # Disable build and wipes the binary to the package and the sub-package
        for pkg in pkgs:
            meta = decode_it(b''.join(show_package_meta(self.api.apiurl, self.api.project, pkg)))
            # Update package meta to disable build
            self.api.create_package_container(self.api.project, pkg, meta=meta, disable_build=True)
            wipebinaries(self.api.apiurl, self.api.project, package=pkg, repo=self.api.cmain_repo)

            # Remove package from Rings
            if self.api.ring_packages.get(pkg):
                delete_package(self.api.apiurl, self.api.ring_packages.get(pkg), pkg, force=True, msg="Cleanup package in Rings")
示例#10
0
def maintainers_get(apiurl, project, package=None):
    if package:
        try:
            meta = show_package_meta(apiurl, project, package)
        except HTTPError as e:
            if e.code == 404:
                # Fallback to project in the case of new package.
                meta = show_project_meta(apiurl, project)
    else:
        meta = show_project_meta(apiurl, project)
    meta = ET.fromstringlist(meta)

    userids = []
    for person in meta.findall('person[@role="maintainer"]'):
        userids.append(person.get('userid'))

    if len(userids) == 0 and package is not None:
        # Fallback to project if package has no maintainers.
        return maintainers_get(apiurl, project)

    return userids
示例#11
0
def maintainers_get(apiurl, project, package=None):
    if package:
        try:
            meta = show_package_meta(apiurl, project, package)
        except HTTPError as e:
            if e.code == 404:
                # Fallback to project in the case of new package.
                meta = show_project_meta(apiurl, project)
    else:
        meta = show_project_meta(apiurl, project)
    meta = ET.fromstringlist(meta)

    userids = []
    for person in meta.findall('person[@role="maintainer"]'):
        userids.append(person.get('userid'))

    if len(userids) == 0 and package is not None:
        # Fallback to project if package has no maintainers.
        return maintainers_get(apiurl, project)

    return userids