Skip to content

Commit

Permalink
Refactored using purge.remove_unit_duplicate_nevra
Browse files Browse the repository at this point in the history
  • Loading branch information
David Davis committed Jun 30, 2017
1 parent 4db15dc commit f126981
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 14 deletions.
11 changes: 5 additions & 6 deletions plugins/pulp_rpm/plugins/importers/iso/importer.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from mongoengine import NotUniqueError, Q
from mongoengine import NotUniqueError

from pulp.common import config as config_utils
from pulp.common.plugins import importer_constants
Expand All @@ -9,6 +9,7 @@
from pulp_rpm.common import constants, ids
from pulp_rpm.plugins.db import models
from pulp_rpm.plugins.importers.iso import configuration, sync
from pulp_rpm.plugins.importers.yum.purge import remove_unit_duplicate_values


# The leading '/etc/pulp/' will be added by the read_json_config method.
Expand Down Expand Up @@ -151,11 +152,9 @@ def upload_unit(self, transfer_repo, type_id, unit_key, metadata, file_path, con
except NotUniqueError:
iso = iso.__class__.objects.get(**iso.unit_key)

# remove any existing units with the same name
units = repo_controller.find_repo_content_units(transfer_repo.repo_obj,
units_q=Q(name=iso['name']),
yield_content_unit=True)
repo_controller.disassociate_units(transfer_repo.repo_obj, units)
remove_unit_duplicate_values(transfer_repo.repo_obj,
{"name": iso["name"]},
iso._content_type_id)

repo_controller.associate_single_unit(transfer_repo.repo_obj, iso)

Expand Down
31 changes: 23 additions & 8 deletions plugins/pulp_rpm/plugins/importers/yum/purge.py
Original file line number Diff line number Diff line change
Expand Up @@ -294,14 +294,29 @@ def remove_unit_duplicate_nevra(unit, repo):
nevra_filters = unit.unit_key.copy()
del nevra_filters['checksum']
del nevra_filters['checksumtype']
Q_filters = [Q(**{key: value}) for key, value in nevra_filters.iteritems()]
Q_nevra_filter = reduce(operator.and_, Q_filters)
Q_type_filter = Q(unit_type_id=unit._content_type_id)
unit_iterator = repo_controller.find_repo_content_units(repo,
repo_content_unit_q=Q_type_filter,
units_q=Q_nevra_filter,
yield_content_unit=True)
repo_controller.disassociate_units(repo, unit_iterator)
remove_unit_duplicate_values(repo, nevra_filters, unit._content_type_id)


def remove_unit_duplicate_values(repo, filters, content_type_id):
"""
Removes units of a type from the repo that have same values for filters
:param repo: the repo from which units will be unassociated
:type repo: pulp.server.db.model.Repository
:param filters: a set of unit values to find and remove from the repo
:type filters: dict
:param content_type_id: type of unit to filter based upon
:type content_type_id: str
"""
Q_filters = [Q(**{key: value}) for key, value in filters.iteritems()]
Q_unit_filter = reduce(operator.and_, Q_filters)
Q_type_filter = Q(unit_type_id=content_type_id)

repo_units = repo_controller.find_repo_content_units(repo,
repo_content_unit_q=Q_type_filter,
units_q=Q_unit_filter,
yield_content_unit=True)
repo_controller.disassociate_units(repo, repo_units)


def remove_repo_duplicate_nevra(repo_id):
Expand Down

0 comments on commit f126981

Please sign in to comment.