示例#1
0
文件: antbs.py 项目: lots0logs/auta
def get_repo_info(repo=None, logged_in=False):
    if repo is None:
        abort(500)
    rinfo_key = 'cache:repo_info:%s' % repo
    repo_info_cache = db.exists(rinfo_key)
    pkg_list = {}
    p, a, rev_pending = get_build_info(1, repo, logged_in)

    # logger.info('@@-antbs.py-@@ 293 | GET_REPO_INFO - FIRED')
    if not repo_info_cache:
        logger.info('@@-antbs.py-@@ 295 | GET_REPO_INFO - CACHE CHECK FAILED. WE ARE NOT USING CACHED INFO')
        all_packages = glob.glob('/srv/antergos.info/repo/%s/x86_64/***.pkg.tar.xz' % repo)

        if all_packages is not None:
            for item in all_packages:
                # logger.info(item)
                item = item.split('/')[-1]
                item = re.search('^([a-z]|[0-9]|-|_)+(?=-\d|r|v)', item)

                item = item.group(0) or ''
                if not item or item == '':
                    continue
                logger.info(item)
                pkg = package.Package(item)
                builds = pkg.builds
                try:
                    bnum = builds[0]
                except Exception:
                    bnum = ''
                review_stat = db.get('build_log:%s:review_stat' % bnum) or 'n/a'
                review_stat = db.get('review_stat:%s:string' % review_stat) or 'n/a'
                review_dev = db.get('build_log:%s:review_dev' % bnum) or 'n/a'
                review_date = db.get('build_log:%s:review_date' % bnum) or 'n/a'
                all_info = dict(bnum=bnum, name=pkg.name, version=pkg.version, review_dev=review_dev,
                                review_stat=review_stat, review_date=review_date, pkgid=pkg.pkgid)

                db.hmset('%s:%s' % (rinfo_key, pkg.pkgid), all_info)
                db.expire('%s:%s' % (rinfo_key, pkg.pkgid), 901)
                db.rpush(rinfo_key, pkg.pkgid)
                db.expire(rinfo_key, 900)
                pkg_list[pkg.pkgid] = all_info

    else:
        logger.info('@@-antbs.py-@@ 318 | GET_REPO_INFO - CACHE CHECK PASSED. WE ARE USING CACHED INFO')
        rindex = db.lrange(rinfo_key, 0, -1)
        for i in rindex:
            h = db.hgetall('%s:%s' % (rinfo_key, i))
            pkg_list[i] = h
            # logger.info('@@-antbs.py-@@ 320 | GET_REPO_INFO - pkg_list hash is %s' % str(pkg_list))

    return pkg_list, rev_pending
示例#2
0
文件: webhook.py 项目: lots0logs/auta
    def process_github(self):
        if not self.is_manual:
            self.payload = json.loads(self.request.data)
            # Save payload in the database temporarily in case we need it later.
            dt = datetime.datetime.now().strftime("%m%d%Y-%I%M")
            key = "antbs:github:payloads:%s" % dt
            if db.exists(key):
                for i in range(1, 5):
                    tmp = "%s:%s" % (key, i)
                    if not db.exists(tmp):
                        key = tmp
                        break
            db.hmset(key, self.payload)
            db.rpush("antbs:github:payloads:index", key)
            db.expire(key, 172800)

            self.full_name = self.payload["repository"]["full_name"]
            self.repo = self.payload["repository"]["name"]
            self.pusher = self.payload["pusher"]["name"]
            self.commits = self.payload["commits"]

        if self.repo == "numix-icon-theme":
            rate_limit = True
            if "numix-icon-theme" not in self.the_queue and "numix-icon-theme" != self.building:
                if not db.exists("numix-commit-flag"):
                    self.changes.append(["numix-icon-theme"])
                    self.is_numix = True
                    db.setex("numix-commit-flag", 1200, "True")
                    rate_limit = False

            if rate_limit:
                msg = "RATE LIMIT IN EFFECT FOR numix-icon-theme"
                logger.info(msg)
                self.result = json.dumps({"msg": msg})
            else:
                self.repo = "antergos-packages"

        elif self.repo == "cnchi-dev":
            self.changes.append(["cnchi-dev"])
            self.repo = "antergos-packages"
            self.is_cnchi = True
        #     idle = db.get('idle')
        #     working = db.exists('creating-cnchi-archive-from-dev')
        #     check = 'cnchi-dev' != self.building or idle == "True"
        #     if not working and 'cnchi-dev' not in self.the_queue and check:
        #         db.set('creating-cnchi-archive-from-dev', 'True')
        #         cnchi_git = 'https://github.com/lots0logs/cnchi-dev.git'
        #         cnchi_clone = '/tmp/cnchi'
        #         git = '/tmp/cnchi/.git'
        #         cnchi_tar_tmp = '/tmp/cnchi.tar'
        #         cnchi_tar = '/srv/antergos.org/cnchi.tar'
        #
        #         for f in [cnchi_clone, cnchi_tar, cnchi_tar_tmp]:
        #             if os.path.exists(f):
        #                 rm_file_or_dir(f)
        #         try:
        #             subprocess.check_call(['git', 'clone', cnchi_git, 'cnchi'], cwd='/tmp')
        #             shutil.rmtree(git)
        #             subprocess.check_call(['tar', '-cf', '/tmp/cnchi.tar', '-C', '/tmp', 'cnchi'])
        #             shutil.copy('/tmp/cnchi.tar', '/srv/antergos.org/')
        #         except subprocess.CalledProcessError as err:
        #             logger.error(err.output)
        #
        #         db.delete('creating-cnchi-archive-from-dev')
        elif self.pusher != "antbs":
            for commit in self.commits:
                self.changes.append(commit["modified"])
                self.changes.append(commit["added"])