Skip to content

Commit

Permalink
Merge pull request #1556 from fabricio-aguiar/5861
Browse files Browse the repository at this point in the history
Assuring uniqueness on publishing
  • Loading branch information
goosemania committed Dec 10, 2019
2 parents 715d07a + 608b028 commit ef9a745
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 13 deletions.
1 change: 1 addition & 0 deletions CHANGES/5861.bugfix
@@ -0,0 +1 @@
Assuring uniqueness on publishing.
22 changes: 10 additions & 12 deletions pulp_rpm/app/tasks/publishing.py
Expand Up @@ -102,7 +102,9 @@ def publish_artifacts(self, content):
"""
published_artifacts = []
for content_artifact in ContentArtifact.objects.filter(content__in=content).iterator():
for content_artifact in ContentArtifact.objects.filter(
content__in=content.exclude(pulp_type="rpm.repo_metadata_file").distinct()
).iterator():
published_artifacts.append(PublishedArtifact(
relative_path=content_artifact.relative_path,
publication=self.publication,
Expand All @@ -119,22 +121,16 @@ def handle_sub_repos(self, distribution_tree):
distribution_tree (pulp_rpm.models.DistributionTree): A distribution_tree object.
"""
sub_repos_pks = []
relations = ["addon", "variant"]
for relation in relations:
addons_or_variants = getattr(distribution_tree, f"{relation}s").all()
for addon_or_variant in addons_or_variants:
repository = addon_or_variant.repository.cast()
repository_version = repository.latest_version()
repo_pk = str(repository.pk)

if repository_version and repository.sub_repo:
addon_or_variant_id = getattr(addon_or_variant, f"{relation}_id")
# exposing sub-repo content:
self.sub_repos.append((addon_or_variant_id, repository_version.content))
if repo_pk not in sub_repos_pks:
# publishing sub-repo content:
self.publish_artifacts(repository_version.content)
sub_repos_pks.append(repo_pk)

def populate(self):
"""
Expand All @@ -143,12 +139,11 @@ def populate(self):
Create published artifacts for a publication.
"""
content = self.publication.repository_version.content
self.repomdrecords = self.prepare_metadata_files(content)
self.publish_artifacts(content)
main_content = self.publication.repository_version.content
self.repomdrecords = self.prepare_metadata_files(main_content)

distribution_trees = DistributionTree.objects.filter(
pk__in=content
pk__in=main_content
).prefetch_related(
"addons",
"variants",
Expand All @@ -166,10 +161,13 @@ def populate(self):
file=File(open(treeinfo_file.name, 'rb'))
)

all_content = main_content
for name, content in self.sub_repos:
os.mkdir(name)
setattr(self, f"{name}_content", content)
setattr(self, f"{name}_repomdrecords", self.prepare_metadata_files(content, name))
all_content |= content
self.publish_artifacts(all_content)


def publish(repository_version_pk):
Expand Down
2 changes: 1 addition & 1 deletion pulp_rpm/app/tasks/synchronizing.py
Expand Up @@ -616,7 +616,7 @@ async def run(self):

updates = await RpmFirstStage.parse_updateinfo(updateinfo_xml_path)

advisories_pb = {
progress_data = {
'message': 'Parsed Advisories', 'code': 'parsing.advisories'
}
with ProgressReport(**progress_data) as advisories_pb:
Expand Down

0 comments on commit ef9a745

Please sign in to comment.