예제 #1
0
파일: binaries.py 프로젝트: ceph/chacra
    def _get_or_create_repo(self):
        """
        A repo model object may exist for this binary, if it exists, then
        return it otherwise create it and then return it.
        """
        # try to find one that matches our needs first
        repo = Repo.query.filter_by(ref=self.ref,
                                    sha1=self.sha1,
                                    flavor=self.flavor,
                                    distro=self.distro,
                                    distro_version=self.distro_version,
                                    project=self.project).first()

        # create one otherwise
        if not repo:
            repo = Repo(
                self.project,
                self.ref,
                self.distro,
                self.distro_version,
                sha1=self.sha1,
                flavor=self.flavor,
                type=self._get_repo_type(),
            )
        # only needs_update when binary is not generic and automatic repos
        # are configured for this project
        repo.needs_update = not self.is_generic and util.repository_is_automatic(
            self.project.name)
        return repo
예제 #2
0
파일: binaries.py 프로젝트: ceph/chacra
    def _get_or_create_repo(self):
        """
        A repo model object may exist for this binary, if it exists, then
        return it otherwise create it and then return it.
        """
        # try to find one that matches our needs first
        repo = Repo.query.filter_by(
            ref=self.ref,
            sha1=self.sha1,
            flavor=self.flavor,
            distro=self.distro,
            distro_version=self.distro_version,
            project=self.project).first()

        # create one otherwise
        if not repo:
            repo = Repo(
                self.project,
                self.ref,
                self.distro,
                self.distro_version,
                sha1=self.sha1,
                flavor=self.flavor,
                type=self._get_repo_type(),
            )
        # only needs_update when binary is not generic and automatic repos
        # are configured for this project
        repo.needs_update = not self.is_generic and util.repository_is_automatic(self.project.name)
        return repo
예제 #3
0
    def mark_related_repos(self):
        related_projects = util.get_related_projects(self.project.name)
        repos = []
        projects = []
        for project_name, refs in related_projects.items():
            p = models.projects.get_or_create(name=project_name)
            projects.append(p)
            repo_query = []
            if refs == ['all']:
                # we need all the repos available
                repo_query = models.Repo.filter_by(project=p).all()
            else:
                for ref in refs:
                    repo_query = models.Repo.filter_by(project=p,
                                                       ref=ref).all()
            if repo_query:
                for r in repo_query:
                    repos.append(r)

        if not repos:
            # there are no repositories associated with this project, so go ahead
            # and create one so that it can be queried by the celery task later
            for project in projects:
                repo = models.Repo(
                    project,
                    self.ref,
                    self.distro,
                    self.distro_version,
                    sha1=self.sha1,
                )
                repo.needs_update = repository_is_automatic(project.name)
                repo.type = self.binary._get_repo_type()

        else:
            for repo in repos:
                repo.needs_update = repository_is_automatic(repo.project.name)
                if repo.type is None:
                    repo.type = self.binary._get_repo_type()
예제 #4
0
파일: flavors.py 프로젝트: ceph/chacra
    def mark_related_repos(self):
        related_projects = util.get_related_projects(self.project.name)
        repos = []
        projects = []
        for project_name, refs in related_projects.items():
            p = models.projects.get_or_create(name=project_name)
            projects.append(p)
            repo_query = []
            if refs == ['all']:
                # we need all the repos available
                repo_query = models.Repo.filter_by(project=p).all()
            else:
                for ref in refs:
                    repo_query = models.Repo.filter_by(project=p, ref=ref).all()
            if repo_query:
                for r in repo_query:
                    repos.append(r)

        if not repos:
            # there are no repositories associated with this project, so go ahead
            # and create one so that it can be queried by the celery task later
            for project in projects:
                repo = models.Repo(
                    project,
                    self.ref,
                    self.distro,
                    self.distro_version,
                    sha1=self.sha1,
                )
                repo.needs_update = repository_is_automatic(project.name)
                repo.type = self.binary._get_repo_type()

        else:
            for repo in repos:
                repo.needs_update = repository_is_automatic(repo.project.name)
                if repo.type is None:
                    repo.type = self.binary._get_repo_type()
예제 #5
0
파일: binaries.py 프로젝트: ceph/chacra
def update_repo(mapper, connection, target):
    try:
        if target.repo.is_generic:
            return
    except (AttributeError, InvalidRequestError):
        # SQLA might not have finished flushing the object
        # so it really doesn't know if it is a generic one or not
        # so do not update anything
        return
    try:
        if util.repository_is_automatic(target.project.name):
            target.repo.needs_update = True
    except AttributeError:
        # target may be None in certain cases, and we don't care which one
        # triggered it because there is nothing we need to do
        pass
예제 #6
0
파일: binaries.py 프로젝트: ceph/chacra
def update_repo(mapper, connection, target):
    try:
        if target.repo.is_generic:
            return
    except (AttributeError, InvalidRequestError):
        # SQLA might not have finished flushing the object
        # so it really doesn't know if it is a generic one or not
        # so do not update anything
        return
    try:
        if util.repository_is_automatic(target.project.name):
            target.repo.needs_update = True
    except AttributeError:
        # target may be None in certain cases, and we don't care which one
        # triggered it because there is nothing we need to do
        pass