Skip to content

Commit 68ded91

Browse files
authored
Merge pull request #1349 from ggainey/imp_exp_domains
Fix an import/export bug when domains are enabled.
2 parents 46d4007 + 5385de6 commit 68ded91

File tree

3 files changed

+39
-13
lines changed

3 files changed

+39
-13
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Allow pulp-import-export when domains are enabled.

pulp_deb/app/modelresource.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
from pulpcore.plugin.importexport import BaseContentResource
55
from pulpcore.plugin.modelresources import RepositoryResource
6+
from pulpcore.plugin.util import get_domain
7+
68
from pulp_deb.app.models import (
79
AptRepository,
810
GenericContent,
@@ -53,6 +55,9 @@ def set_up_queryset(self):
5355

5456
return content
5557

58+
def dehydrate__pulp_domain(self, content):
59+
return str(content._pulp_domain_id)
60+
5661

5762
class InstallerFileIndexResource(DebContentResource):
5863
"""
@@ -156,10 +161,10 @@ class ReleaseComponentForeignKeyWidget(ForeignKeyWidget):
156161
str(<release_component.distribution>|<release_component.component>)
157162
"""
158163

159-
def render(self, value, obj):
164+
def render(self, value, obj=None, **kwargs):
160165
"""Render formatted string to use as unique-identifier."""
161-
rc_dist = obj.release_component.distribution
162-
rc_comp = obj.release_component.component
166+
rc_dist = value.distribution
167+
rc_comp = value.component
163168
return f"{rc_dist}|{rc_comp}"
164169

165170
class PackageForeignKeyWidget(ForeignKeyWidget):
@@ -170,10 +175,10 @@ class PackageForeignKeyWidget(ForeignKeyWidget):
170175
str(<package.relative_path>|<package.sha256>)
171176
"""
172177

173-
def render(self, value, obj):
178+
def render(self, value, obj=None, **kwargs):
174179
"""Render formatted string to use as unique-identifier."""
175-
pkg_relative_path = obj.package.relative_path
176-
pkg_sha256 = obj.package.sha256
180+
pkg_relative_path = value.relative_path
181+
pkg_sha256 = value.sha256
177182
return f"{pkg_relative_path}|{pkg_sha256}"
178183

179184
release_component = fields.Field(
@@ -200,8 +205,12 @@ def before_import_row(self, row, **kwargs):
200205

201206
(rc_dist, rc_comp) = row["release_component"].split("|")
202207
(pkg_relative_path, pkg_sha256) = row["package"].split("|")
203-
rc = ReleaseComponent.objects.filter(distribution=rc_dist, component=rc_comp).first()
204-
pkg = Package.objects.filter(relative_path=pkg_relative_path, sha256=pkg_sha256).first()
208+
rc = ReleaseComponent.objects.filter(
209+
distribution=rc_dist, component=rc_comp, pulp_domain=get_domain()
210+
).first()
211+
pkg = Package.objects.filter(
212+
relative_path=pkg_relative_path, sha256=pkg_sha256, pulp_domain=get_domain()
213+
).first()
205214
row["release_component"] = str(rc.pulp_id)
206215
row["package"] = str(pkg.pulp_id)
207216

pulp_deb/tests/functional/api/test_pulpexport_pulpimport.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,11 @@
99

1010
from uuid import uuid4
1111

12-
from pulpcore.app import settings
1312
from pulp_deb.tests.functional.constants import DEB_FIXTURE_SUMMARY
1413
from pulp_deb.tests.functional.utils import get_counts_from_content_summary
1514

1615
NUM_REPOS = 2
1716

18-
if settings.DOMAIN_ENABLED:
19-
pytest.skip("Domains do not support import.", allow_module_level=True)
20-
2117

2218
@pytest.fixture
2319
def deb_gen_import_export_repos(
@@ -200,9 +196,13 @@ def test_import(
200196
deb_get_repository_by_href,
201197
deb_importer_factory,
202198
deb_perform_import,
199+
has_pulp_plugin,
203200
is_chunked,
201+
pulp_settings,
204202
):
205203
"""Test a PulpImport."""
204+
if pulp_settings.DOMAIN_ENABLED and not has_pulp_plugin("core", min="3.90.0"):
205+
pytest.skip("Pulp Import/Export only supported under domains in core>=3.90")
206206
import_repos, export_repos = deb_gen_import_export_repos()
207207
importer = deb_importer_factory(import_repos, export_repos)
208208
task_group = deb_perform_import(importer, import_repos, export_repos, is_chunked=is_chunked)
@@ -218,9 +218,13 @@ def test_double_import(
218218
deb_get_repository_by_href,
219219
deb_importer_factory,
220220
deb_perform_import,
221+
has_pulp_plugin,
221222
pulpcore_bindings,
223+
pulp_settings,
222224
):
223225
"""Test two PulpImports for a PulpExport."""
226+
if pulp_settings.DOMAIN_ENABLED and not has_pulp_plugin("core", min="3.90.0"):
227+
pytest.skip("Pulp Import/Export only supported under domains in core>=3.90")
224228
import_repos, export_repos = deb_gen_import_export_repos()
225229
importer = deb_importer_factory(import_repos, export_repos)
226230
deb_perform_import(importer, import_repos, export_repos)
@@ -234,8 +238,16 @@ def test_double_import(
234238
assert repo.latest_version_href.endswith("versions/1/")
235239

236240

237-
def test_export(deb_create_exporter, deb_create_export, deb_gen_import_export_repos):
241+
def test_export(
242+
deb_create_exporter,
243+
deb_create_export,
244+
deb_gen_import_export_repos,
245+
has_pulp_plugin,
246+
pulp_settings,
247+
):
238248
"""Issue and evaluate a PulpExport."""
249+
if pulp_settings.DOMAIN_ENABLED and not has_pulp_plugin("core", min="3.90.0"):
250+
pytest.skip("Pulp Import/Export only supported under domains in core>=3.90")
239251
import_repos, export_repos = deb_gen_import_export_repos()
240252
exporter = deb_create_exporter(import_repos, export_repos)
241253
export = deb_create_export(import_repos, export_repos, exporter)
@@ -256,11 +268,15 @@ def test_import_create_repos(
256268
deb_importer_factory,
257269
deb_init_and_sync,
258270
deb_perform_import,
271+
has_pulp_plugin,
259272
pulpcore_bindings,
273+
pulp_settings,
260274
monitor_task,
261275
delete_orphans_pre,
262276
):
263277
"""Test whether PulpImporter can create repositories."""
278+
if pulp_settings.DOMAIN_ENABLED and not has_pulp_plugin("core", min="3.90.0"):
279+
pytest.skip("Pulp Import/Export only supported under domains in core>=3.90")
264280
entity_map = {}
265281
repo, remote = deb_init_and_sync(remote_args={"policy": "immediate"})
266282
entity_map["repo"] = repo

0 commit comments

Comments
 (0)