コード例 #1
0
def populate(publication):
    """
    Populate a publication.

    Create published artifacts and yield a Manifest Entry for each.

    Args:
        publication (pulpcore.plugin.models.Publication): A Publication to populate.

    Yields:
        Entry: Each manifest entry.

    """

    content_artifacts = ContentArtifact.objects.filter(
        content__in=publication.repository_version.content).order_by(
            "-content__pulp_created")

    for content_artifact in content_artifacts.select_related(
            "artifact").iterator():
        if content_artifact.artifact:
            artifact = content_artifact.artifact
        else:
            # TODO: this scales poorly, one query per on_demand content being published.
            artifact = RemoteArtifact.objects.filter(
                content_artifact=content_artifact).first()
        entry = Entry(
            relative_path=content_artifact.relative_path,
            digest=artifact.sha256,
            size=artifact.size,
        )
        yield entry
コード例 #2
0
def populate(publication):
    """
    Populate a publication.

    Create published artifacts and yield a Manifest Entry for each.

    Args:
        publication (pulpcore.plugin.models.Publication): A Publication to populate.

    Yields:
        Entry: Each manifest entry.

    """
    def find_artifact():
        _artifact = content_artifact.artifact
        if not _artifact:
            _artifact = RemoteArtifact.objects.filter(
                content_artifact=content_artifact).first()
        return _artifact

    paths = set()
    for content in FileContent.objects.filter(
            pk__in=publication.repository_version.content).order_by(
                '-_created'):
        if content.relative_path in paths:
            continue
        paths.add(content.relative_path)
        for content_artifact in content.contentartifact_set.all():
            artifact = find_artifact()
            entry = Entry(relative_path=content_artifact.relative_path,
                          digest=artifact.sha256,
                          size=artifact.size)
            yield entry
コード例 #3
0
def _publish(publication):
    """
    Create published artifacts and yield a Manifest Entry for each.
    Args:
        publication (pulpcore.plugin.models.Publication): The Publication being created.
    Yields:
        Entry: The manifest entry.
    """
    def find_artifact():
        _artifact = content_artifact.artifact
        if not _artifact:
            _artifact = RemoteArtifact.objects.get(
                content_artifact=content_artifact,
                importer__repository=publication.repository_version.repository)
        return _artifact

    for content in publication.repository_version.content:
        for content_artifact in content.contentartifact_set.all():
            artifact = find_artifact()
            published_artifact = PublishedArtifact(
                relative_path=content_artifact.relative_path,
                publication=publication,
                content_artifact=content_artifact)
            published_artifact.save()
            entry = Entry(path=content_artifact.relative_path,
                          digest=artifact.sha256,
                          size=artifact.size)
            yield entry
コード例 #4
0
ファイル: models.py プロジェクト: Kryndex/pulp_file
    def _publish(self):
        """
        Create published artifacts and yield the manifest entry for each.

        Yields:
            Entry: The manifest entry.
        """
        for content in self.publication.repo_version.content():
            for content_artifact in content.contentartifact_set.all():
                artifact = self._find_artifact(content_artifact)
                published_artifact = PublishedArtifact(
                    relative_path=content_artifact.relative_path,
                    publication=self.publication,
                    content_artifact=content_artifact)
                published_artifact.save()
                entry = Entry(
                    path=content_artifact.relative_path,
                    digest=artifact.sha256,
                    size=artifact.size)
                yield entry